有两个问题。首先是由于 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 migrate
, python manage.py make migrations
, python manage.py make appname
, python manage.py syncdb
基本上都没有正常工作,没有将models.py 转换成数据库scheme。
为什么?我该如何解决这个问题?我尝试从 models.py 中删除所有内容并再次运行所有命令,但它仍然在不存在的字段上输出错误(?),如 django.db.utils.ProgrammingError: relation "blog_community"already exists
。我尝试使用 --fake initial
和 flush
和 reset
但这些都没有帮助。
最佳答案
由于您正在从 mysql 迁移到 postgresql,可以安全地假设您的 postgresql 数据库没有您需要的任何数据。
您当前的模型可能可以直接导入到 postgresql 中。但是,这并不意味着您存档的迁移文件与 postgresql 兼容。
很可能您的模型在一段时间内不断演变,并且很可能存在许多与 postgresql 不兼容的旧迁移文件。
第 1 步:浏览项目中的所有应用并清除迁移文件夹。
第 2 步:删除 postgresql 数据库(假设它没有任何数据)
第 3 步:执行以下命令为 django 内部表创建迁移
./manage.py makemigrations
第 4 步:为您的每个应用执行以下命令。
./manage.py makemigrations my_app_name
第四步:最后,做
./manage.py migrate.
关于python - 邮政数据库。 models.py 没有转化为数据库方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41202674/