【问题标题】:PostgreSQL . Models.py is not transformed into database schemePostgreSQL 。 Models.py 没有转化为数据库方案
【发布时间】:2017-05-03 07:54:05
【问题描述】:

有两个问题。首先是由于 Django 使用应用程序名称前缀转换模型类名称,并且就该部分已解决 'Relation does not exist' error after transferring to PostgreSQL 我想提出不同的问题可能是正确的。我遇到了relation "blog_userprofile" does not exist 之类的错误,并通过

select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS where table_name = 'closer';  

现有数据库closer 中没有列,所以python manage.py migratepython manage.py make migrationspython manage.py make appnamepython manage.py syncdb 基本上都没有正常工作,也没有将models.py 转换为数据库方案。

为什么?我该如何解决这个问题?我尝试从 models.py 中删除所有内容并再次运行所有命令,但它仍然在不存在的字段(?)上输出错误,例如 django.db.utils.ProgrammingError: relation "blog_community" already exists 。我尝试使用 --fake initialflushreset 但这些都没有帮助。

【问题讨论】:

  • 不要删除models py,需要清除的是migrations/文件夹的内容。您能否发布导致此问题的完整模型。

标签: python mysql django postgresql


【解决方案1】:

基本上错误表明您正在尝试创建已经创建的模型。命令是 manage.py makemigrations 创建和 manage.py migrate 执行迁移。如果它们已经存在,我猜你在两者之间做错了什么。
尝试删除分贝。删除迁移。创建数据库,创建迁移并运行它们。

【讨论】:

    【解决方案2】:

    由于您正在从 mysql 迁移到 postgresql,因此可以安全地假设您的 postgresql 数据库没有您需要的任何数据。

    您当前的模型可能可以直接导入到 postgresql 中。但是,这并不意味着您存档的迁移文件与 postgresql 兼容。

    很可能您的模型经过一段时间的演变,很可能有许多旧迁移文件与 postgresql 不兼容。

    第 1 步:浏览项目中的所有应用并清除迁移文件夹。

    第 2 步:删除 postgresql 数据库(假设它没有任何数据)

    第 3 步:执行以下命令为 django 内部表创建迁移

     ./manage.py makemigrations
    

    第 4 步:对您的每个应用执行以下命令。

     ./manage.py makemigrations my_app_name
    

    第4步:最后,做

     ./manage.py migrate.
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多