【问题标题】:How can I change a Django db to MySQL on pythonanywhere?如何在 pythonanywhere 上将 Django 数据库更改为 MySQL?
【发布时间】:2017-05-05 05:31:10
【问题描述】:

由于MySQL tutorial by pythonanywhere,我认为这很简单,但我仍然无法从 sqlite3 切换。我是 SQL 数据库的初学者,我一直在查看其他 stackoverflow 问题,但我不知道从这里可以去哪里。这是我到目前为止所做的。

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

【问题讨论】:

标签: python mysql django pythonanywhere dev-to-production


【解决方案1】:

迁移似乎出了点问题。我建议您执行以下步骤来重新创建您的数据库。

  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)并且对与真实数据库的交互没有任何作用。 如果您不修改项目,则实际上不需要重新创建迁移文件。

【讨论】:

  • 当我运行 migrate 时,它会返回“要执行的操作:应用所有迁移:allmyapps 运行迁移:没有要应用的迁移。”它似乎没有运行任何迁移。
  • 如果我进入 Django shell 并运行 from django.conf import settings 并检查 settings.DATABASES 它仍然说我在 sqlite3 上运行。我是否可以在我的 WSGI 文件中更改为正确的 db(或 settings.py 文件?),但在我的代码中的其他地方没有?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2015-05-31
    • 2011-07-18
    • 2012-02-12
    • 2021-03-28
    • 2015-01-27
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多