如何在 pythonanywhere 上将 Django 数据库更改为 MySQL?

How can I change a Django db to MySQL on pythonanywhere?

我认为这会很简单,因为 MySQL tutorial by pythonanywhere,但我仍然无法从 sqlite3 切换。我是 SQL 数据库的初学者,我一直在查看其他 Whosebug 问题,但我不确定从这里还能去哪里。这是我到目前为止所做的。

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 命令来检查连接或手动重新制作数据库?

看起来迁移出了点问题。我建议您按照以下步骤重新创建数据库。

  1. 在数据库中备份您的数据!!!

  2. 连接到您的远程数据库:

    $ mysql -h 3DPrince.mysql.pythonanywhere-services.com -u 3DPrince -p
    
  3. 删除当前数据库并重新创建:

    drop database `3DPrince$ubodb`;
    
    create database `3DPrince$ubodb`;
    
  4. 在本地(在另一个终端的选项卡中)迁移您的 django 项目:

    $ python manage.py migrate
    
  5. 检查(在您连接到删除数据库的选项卡中)是否已正确创建所有表:

    use `3DPrince$ubodb`;
    
    show tables;
    

如果出现问题,您将看到警告或错误。

而且您也不需要一直执行 python manage.py makemigrations,因为此命令只会创建迁移文件。 (它们存储在 yourproj/yourapp/migrations 中)并且对与真实数据库的交互没有任何作用。 如果您不修改您的项目,您实际上不需要重新创建迁移文件。

以上步骤帮助我调试了我的错误。事实证明,我的后端仍在识别我以前使用过的设置文件,而我的前端正在寻找新的 MYSQL 我切换到生产环境的设置文件。我所做的只是从开发 settings.py 文件中注释掉 DATABASES 并再次迁移,它成功了。