【问题标题】:Switching between MySQL and SQLite3 in Django在 Django 中的 MySQL 和 SQLite3 之间切换
【发布时间】:2015-10-03 14:11:34
【问题描述】:

我正在使用 Django 的 Mercurial 项目中工作。在代码中(settings.py下)有:

SESSION_ENGINE = 'django.contrib.sessions.backends.db'
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'foo',
    'USER': 'bar',
    'PASSWORD': 'baz',
    'HOST': '',
    'PORT': '',
    'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' },
    }
}

#Use a local mysql db for development
if IN_DEVELOPMENT:
    DATABASES["default"] = {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foo',
        'USER': 'bar',
        'PASSWORD': 'baz',
        'HOST': '',
        'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' },
        }

有人告诉我,我可以简单地将 if IN_DEVELOPMENT 块中的 mysql 替换为 sqlite3(因为我没有 mySQL 并且我尝试安装它没有成功)。这会在我加载 any 页面时导致错误,我可以通过注释掉第二个 OPTIONS 行来解决该错误。现在我可以加载完全依赖静态数据的页面了。但是当我尝试访问一个表时,我得到了errors like this(尽管“没有这样的表”的名称各不相同)。

我必须从项目中重新创建数据库表吗?是否有init_command(如果它们不存在,我假设它们会创建表?)我可以与sqlite3 一起使用吗?除了下载 MySQL-python 之外,我还有什么其他的行动方案吗(这会有所帮助吗?)

【问题讨论】:

  • 不要发布保管箱链接...因为它们在登录之后
  • 对不起,谢谢。更新链接
  • 尝试删除文件foo...我认为只有当数据库不存在时django才会自动重建你的表(或者你可能需要运行admin.py syncdb或其他任何东西(我不使用django 够清楚)

标签: python mysql django sqlite


【解决方案1】:

我的 lodadata 会话有问题。

https://coderwall.com/p/mvsoyg/django-dumpdata-and-loaddata

这给了我解决方案。

" 要解决此问题,请确保通过排除 contenttypes 和 auth.permissions 表来备份数据库 ./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json " 它对我有用。

【讨论】:

    【解决方案2】:

    当然,您需要创建表,因为它们在新数据库中不存在。您可以按照与最初完全相同的方式执行此操作:运行 manage.py migrate

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      相关资源
      最近更新 更多