﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
21235	1.6: Suggest installing standalone pysqlite2 on Windows when using Python 2.6	Ramiro Morales	nobody	"Running the `stable/1.6.x` tests on Windows with the latest official Python 2.6.6 binaries results on many errors:

{{{
----------------------------------------------------------------------
Ran 5880 tests in 212.012s

FAILED (failures=6, errors=482, skipped=577, expected failures=11)
Destroying test database for alias 'default'...
Destroying test database for alias 'other'...
}}}

Example of one of them:

{{{
======================================================================
ERROR: test_form_jump (django.contrib.formtools.tests.wizard.namedwizardtests.tests.NamedCookieWizardTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""C:\django\contrib\formtools\tests\wizard\namedwizardtests\tests.py"", line 19, in setUp
    self.testuser, created = User.objects.get_or_create(username='testuser1')
  File ""C:\django\db\models\manager.py"", line 154, in get_or_create
    return self.get_queryset().get_or_create(**kwargs)
  File ""C:\django\db\models\query.py"", line 388, in get_or_create
    six.reraise(*exc_info)
  File ""C:\django\db\models\query.py"", line 379, in get_or_create
    with transaction.atomic(using=self.db):
  File ""C:\django\db\transaction.py"", line 265, in __enter__
    sid = connection.savepoint()
  File ""C:\django\db\backends\__init__.py"", line 227, in savepoint
    self._savepoint(sid)
  File ""C:\django\db\backends\__init__.py"", line 197, in _savepoint
    self.cursor().execute(self.ops.savepoint_create_sql(sid))
  File ""C:\django\db\backends\util.py"", line 53, in execute
    return self.cursor.execute(sql, params)
  File ""C:\django\db\utils.py"", line 99, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File ""C:\django\db\backends\util.py"", line 51, in execute
    return self.cursor.execute(sql)
  File ""C:\django\db\backends\sqlite3\base.py"", line 444, in execute
    return Database.Cursor.execute(self, query)
OperationalError: near ""SAVEPOINT"": syntax error
}}}

This might be related to the versions of SQLite shared library and/or `stdlib3` sqlite module shipped with these binaries:

{{{
C:\>c:\python26\python
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type ""help"", ""copyright"", ""credits"" or ""license"" for more information.
>>> import sqlite3
>>> print(sqlite3.sqlite_version)
3.5.9
>>> print(sqlite3.version)
2.4.1
}}}

According to our transactions document savepoint SQL syntax was added to SQLite3 in 3.6.8 (https://docs.djangoproject.com/en/1.6/topics/db/transactions/#savepoints-in-sqlite)

Installing the latest pysqlite2 official binaries available ffor Python 2.6 (unfortunately only for 32 bits) at http://code.google.com/p/pysqlite/downloads/detail?name=pysqlite-2.6.3.win32-py2.6.exe solves the problem (the remaining error and failure are unrelated):

{{{
----------------------------------------------------------------------
Ran 5880 tests in 207.032s

FAILED (failures=1, errors=1, skipped=530, expected failures=11)
}}}

Perhaps we need to add a note about this to the relevant document (https://docs.djangoproject.com/en/1.6/ref/databases/#sqlite-notes)."	Bug	closed	Documentation	1.6-beta-1	Normal	fixed			Accepted	1	0	0	0	0	0
