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

zuzel.vp zuzel.vp at gmail.com
Wed Aug 10 17:02:25 UTC 2011


Now the question is what needs to be changed in the source code and
docs to make sqlite the default db for dev. I am working on finding
the second cause of problems while running the tests (both should be
related to django_nose since the second one we saw during the workshop
(admin.autodiscover runs multiple times and thus fails) appeared when
I upgraded django_nose).

-- 
Thanks,
    Zuzel

On Sat, Aug 6, 2011 at 10:13 PM, Greg Wilson <gvwilson at third-bit.com> wrote:
> +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 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
>
>
> _______________________________________________
> p2pu-dev mailing list
> p2pu-dev at lists.p2pu.org
> http://lists.p2pu.org/mailman/listinfo/p2pu-dev
>
>


More information about the p2pu-dev mailing list