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

标签 python mysql django pythonanywhere dev-to-production

我认为这会很简单,因为 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 迁移

我仍然收到
错误 (1146,“表'3DPrince$ubodb.django_site'不存在”)
我不知道从这里还能做什么,也不知道如何从 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中)并且对与真实数据库的交互没有任何作用。 如果您不修改项目,则实际上不需要重新创建迁移文件。

关于python - 如何在 pythonanywhere 上将 Django 数据库更改为 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234875/

相关文章:

python - 在基于文本的角色扮演游戏中根据玩家统计数据计算敌人统计数据的问题

mysql - 如何使用asp classic将表情符号插入mysql数据库?

mysql - 如何过滤自定义查询?

Django 表单无法验证

python - 无法将Bessel函数的结果放入numpy的数组中

具有默认参数的 Python 映射

javascript - 无法根据下拉选项更新同一页面

django - csrfmiddlewaretoken 和 csrftoken 是什么关系?

python - 将列表列表拆分为更小的列表

mysql - c程序添加一个用户到mysql