我以为这很简单,因为有了MySQL tutorial by pythonanywhere,但是从sqlite3切换时仍然遇到困难。我是SQL数据库的初学者,并且我一直在检查其他stackoverflow问题,但是我不确定从这里开始还有其他地方。到目前为止,这是我所做的。
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '3DPrince$ubodb',
'USER': '3DPrince',
'PASSWORD': 'secretpassword',
'HOST': '3DPrince.mysql.pythonanywhere-services.com',
},
}
我还运行以下命令尝试同步数据库。
manage.py makemigrations
manage.py migrate
我仍然收到错误消息
(1146, "Table '3DPrince$ubodb.django_site' doesn't exist")
我不确定从这里还能做什么,也不确定如何从mysql bash控制台进行任何检查。
谁能指出我做错了什么?还是一些有用的mysql bash命令来检查连接或手动重新制作数据库?
最佳答案
迁移似乎出了点问题。我建议您按照以下步骤重新创建数据库。
在数据库中备份数据!!!
连接到您的远程数据库:
$ mysql -h 3DPrince.mysql.pythonanywhere-services.com -u 3DPrince -p
删除当前数据库,然后重新创建它:
drop database `3DPrince$ubodb`;
create database `3DPrince$ubodb`;
在本地(在另一个终端的选项卡中)迁移django项目:
$ python manage.py migrate
检查(在连接到删除数据库的选项卡中)所有表均已正确创建:
use `3DPrince$ubodb`;
show tables;
如果出现问题,您将看到警告或错误。
同样,您也不需要一直执行
python manage.py makemigrations
,因为此命令仅创建迁移文件。(它们存储在
yourproj/yourapp/migrations
中),对与实际数据库的交互没有任何作用。如果您不修改项目,则实际上不需要重新创建迁移文件。