[p2pu-dev] Switching from mysql to sqlite3 for development

Greg Wilson gvwilson at third-bit.com
Sun Aug 7 02:13:18 UTC 2011


+1 for using sqlite3 by default for dev --- now, if only we could figure 
out why the tests are getting mangled.  Taavi?
Thx,
G

On 11-08-06 9:52 PM, Jessica Ledbetter wrote:
> Actually this might be from a few commits ago. I think brianloveswords 
> had this problem. I've been coding on branches so was a little behind 
> on master.
>
> Did a syncdb migrate got this error in the browser:
> TemplateSyntaxError at /groups/django-101/content/documentation/
>
> Caught DoesNotExist while rendering: Signup matching query does not exist.
>
> If memory serves, this has happened before. So, I did what worked last 
> time when things got a little wonky and that was drop the database and 
> create it and do a syncdb --migrate again. Unfortunately, that trick 
> didn't work.
>
> What I got doing migrate:
>
> Running migrations for replies:
>  - Migrating forwards to 
> 0002_auto__del_field_pagecomment_page__add_field_pagecomment_scope_content_.
> > replies:0001_initial
>  ! Error found during real run of migration! Aborting.
>
>  ! Since you have a database that does not support running
>  ! schema-altering statements in transactions, we have had
>  ! to leave it in an interim state between migrations.
>
> ! You *might* be able to recover with:   = DROP TABLE 
> `replies_pagecomment` CASCADE; []
>
>  ! The South developers regret this has happened, and would
>  ! like to gently persuade you to consider a slightly
>  ! easier-to-deal-with DBMS.
>  ! NOTE: The error which caused the migration to fail is further up.
> Traceback (most recent call last):
>   File "./manage.py", line 26, in <module>
>     execute_manager(settings)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/__init__.py", 
> line 438, in execute_manager
>     utility.execute()
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/__init__.py", 
> line 379, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/base.py", 
> line 191, in run_from_argv
>     self.execute(*args, **options.__dict__)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/base.py", 
> line 220, in execute
>     output = self.handle(*args, **options)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/base.py", 
> line 351, in handle
>     return self.handle_noargs(**options)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/management/commands/syncdb.py", 
> line 99, in handle_noargs
>     management.call_command('migrate', **options)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/__init__.py", 
> line 166, in call_command
>     return klass.execute(*args, **defaults)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/core/management/base.py", 
> line 220, in execute
>     output = self.handle(*args, **options)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/management/commands/migrate.py", 
> line 105, in handle
>     ignore_ghosts = ignore_ghosts,
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/__init__.py", 
> line 191, in migrate_app
>     success = migrator.migrate_many(target, workplan, database)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/migrators.py", 
> line 221, in migrate_many
>     result = migrator.__class__.migrate_many(migrator, target, 
> migrations, database)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/migrators.py", 
> line 292, in migrate_many
>     result = self.migrate(migration, database)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/migrators.py", 
> line 125, in migrate
>     result = self.run(migration)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/migrators.py", 
> line 99, in run
>     return self.run_migration(migration)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/migration/migrators.py", 
> line 82, in run_migration
>     south.db.db.execute_deferred_sql()
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/db/generic.py", 
> line 184, in execute_deferred_sql
>     self.execute(sql)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/south/db/generic.py", 
> line 150, in execute
>     cursor.execute(sql, params)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/db/backends/util.py", 
> line 34, in execute
>     return self.cursor.execute(sql, params)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/django/db/backends/mysql/base.py", 
> line 86, in execute
>     return self.cursor.execute(query, args)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/MySQLdb/cursors.py", 
> line 173, in execute
>     self.errorhandler(self, exc, value)
>   File 
> "/home/jledbetter/Envs/lernanta/lib/python2.6/site-packages/MySQLdb/connections.py", 
> line 36, in defaulterrorhandler
>     raise errorclass, errorvalue
> _mysql_exceptions.OperationalError: (1005, "Can't create table 
> 'lernanta.#sql-3d3_a9f' (errno: 150)")
>
>
> Here's how I fixed it -- in case others have this. I switched from 
> mysql to sqlite3! Yes, probably about time :) Greg reminded me of its 
> wonderfulness in IRC today and this seemed the perfect time to update 
> my local installation too!
>
> Sqlite3 is great for development and I've been using it elsewhere but 
> was using mysql for local development on Lernanta. Why? Mostly because 
> I was more familiar with mysql and it came that way :)
>
> To switch to sqlite3, in your settings_local.py file put this:
>
> DATABASES = {
>
>     'default': {
>         'NAME': '/home/jledbetter/projects/lernanta/lernanta.db',
>         'ENGINE': 'django.db.backends.sqlite3',
>     }
>
> }
>
> where your database information is. Of course, update the path to the 
> file (the database "name") to be where the file is that you're using. 
> The engine switches from msyql to sqlite3. The rest of the stuff isn't 
> needed, I don't think. You don't need the mysql version but feel free 
> to just comment it out in case you want to switch back or there are 
> problems.
>
> Maybe we should have the default in settings_local.dist.py 
> <http://settings_local.dist.py> to be sqlite3? Would save us a bit of 
> mysql documentation/headache.
>
> Jessica
>
>
> -- 
> Jessica Ledbetter
> http://jessicaledbetter.com
>
>
>
> _______________________________________________
> p2pu-dev mailing list
> p2pu-dev at lists.p2pu.org
> http://lists.p2pu.org/mailman/listinfo/p2pu-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p2pu.org/pipermail/p2pu-dev/attachments/20110806/dffcdb51/attachment-0001.html>


More information about the p2pu-dev mailing list