我正在使用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;' },
}
有人告诉我,我可以简单地用mysql
替换if IN_DEVELOPMENT
块中的sqlite3
(因为我没有mySQL,而且我安装它的尝试都没有成功)。当我加载任何页面时,这会导致错误,我可以通过注释掉第二个OPTIONS
行来解决这个问题。现在我可以加载仅依赖于静态数据的页面。但是当我尝试访问一个表时,我得到errors like this(虽然“没有这样的表”的名称不同)。
我是否必须从项目中重新创建数据库表?是否有init_command
(如果它们尚不存在,我认为会创建表格?)我可以使用sqlite3
吗?除了下载MySQL-python
之外,我还有其他任何行动吗(甚至可以提供帮助吗?)
答案 0 :(得分:2)
当然,您需要创建表,因为它们不存在于新数据库中。您可以采用与原始方式完全相同的方式执行此操作:运行manage.py migrate
。
答案 1 :(得分:0)
我的lodadata会话有问题。
https://coderwall.com/p/mvsoyg/django-dumpdata-and-loaddata
这给了我解决方案。
" 要解决此问题,请确保通过排除contenttypes和auth.permissions表来备份数据库 ./manage.py dumpdata --exclude auth.permission --exclude contenttypes> db.json " 它对我有用。