【问题标题】:Strange error during initial database migration of a Django siteDjango站点初始数据库迁移期间的奇怪错误
【发布时间】:2016-01-17 07:12:55
【问题描述】:

我已经在我的 Django 网站的 localhost 副本上工作了一段时间,但最终决定是时候将其上传到 PythonAnywhere。该站点在我的本地主机上运行良好,但是当我为新站点进行初始迁移时出现奇怪的错误。例如,我得到这个:

mysql.connector.errors.DatabaseError: 1264: Out of range value for 第 1 行的“已应用”列

'applied' 不是我模型中的一个字段,所以这个错误必须由 Django 生成供自己使用的表。我刚刚检查了我的本地主机的 MySQL 管理器,并且“应用”字段似乎来自表 django_migrations。

为什么 Django 会错误地设置自己使用的表?我已经多次删除并重新制作数据库,但错误仍然存​​在。如果有人知道是什么原因造成的,我将非常感谢您的建议。

我的网站前端仍然显示 Hello World 页面,并且管理员链接出现页面不存在错误。在这个阶段,我将假设这与数据库错误有关。

编辑:关于为什么我无法访问网站前端的其他信息:

事实证明,当我将预建站点导入 PythonAnywhere 时,我必须编辑我的 wsgi.py 文件以指向应用程序。现在的问题是我不知道该放什么。当我按照 PythonAnywhere 帮助文件中的标准说明进行操作时,似乎没有任何改变。那里的网站似乎也非常缺乏详细的错误消息来帮助解决它。有没有办法关闭他们的标准 hello world 占位符页面并改为查看服务器错误消息?

【问题讨论】:

  • 你用的django是什么版本的?
  • 我的本地主机是 1.8,但我只记得我在网站上运行了自动升级到 1.9,所以我将尝试将其回滚到 1.8,看看是否可以解决问题。
  • 我刚刚试了一下,它似乎确实解决了数据库问题,但我仍然无法访问我网站的前端。我想我将不得不进一步调查为什么会发生这种情况。
  • 您是否也在远程主机上应用了迁移(通过运行 manage.py migrate )?
  • 是的,谢谢。我发现了一些更多信息,我将在上面的原始问题中添加这些信息。

标签: python django python-3.x django-forms pythonanywhere


【解决方案1】:

正如我在上面的评论中所说,事实证明数据库问题是由于将 Django 从 1.8 升级到 1.9 造成的。我忘记了这件事。将我的网站回滚到 Django 1.8 后,数据库迁移运行正常。

我无法访问该网站的原因原来是因为我必须编辑wsgi.py文件,但是我编辑了错误的版本。我使用的 nginx localhost Web 服务器将其保存在与 PythonAnyhwere 的实现不同的文件夹位置。我从本地主机副本上传了文件,并根据 PythonAnywhere 帮助系统上的说明对其进行了编辑,但没有意识到 PythonAnywhere 的服务器没有读取它。我真正需要做的是通过控制面板上的网络选项卡访问它来编辑正确的文件。一旦我编辑了这个文件,网站前端就开始按预期工作。

【讨论】:

    【解决方案2】:

    这个问题也发生在我的 1.10 版中,有一个全新的项目。我发现如果您使用recommended driverconnector in the documentation,迁移工作没有问题。

    如果您不想阅读文档,简而言之:

    1. 为 python 2.7 安装 MySQLdb 或为 python 3.3+ 安装 mysqlclient
    2. 修改您的 settings.py 文件。在 DATABASES 字典集中:

      'ENGINE': 'django.db.backends.mysql',

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 2011-11-19
      • 1970-01-01
      • 2019-03-31
      • 2018-10-21
      • 2016-05-10
      • 2016-07-04
      • 2015-03-02
      • 2015-08-08
      相关资源
      最近更新 更多