[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