我有一个django 1.8应用程序,可以使用db。我试图使用内置迁移来更改表的架构。以下是我所做的步骤:
在我的开发环境中,我抓取了应用程序的源代码并运行
python manage.py sycdb然后我跑了
python manage.py loaddata ~/my_data.json然后我修改了modes.py。从没有数据的表'TABLE1‘中添加了一个字段并将其重命名为。
然后
python manage.py makemigrations myapp
python manage.py migrate错误: django.db.utils.OperationalError:表"myapp_someother_table“已经存在
然后跑
python manage.py migrate --fake-initial起作用了!但是,当我浏览到TABLE1的管理页面时,我会得到以下错误:
OperationalError:没有这样的列: myapp_table1.my_new_field_id
我检查了数据库,是的,没有这样的栏。我怎么才能从这里开始呢?我更喜欢通过django来解决这个问题。如果我在db中直接修复它,那么迁移就不同步了。
发布于 2015-06-24 11:23:22
迁移不会自动地看到您已经进行了更改。迁移通过将当前模型与保存在迁移文件中的历史模型进行比较来检测更改。
在这种情况下,您没有任何历史模型,因为您没有任何迁移。Django无法检测到模型中的任何更改,即使它们与数据库不同。
对您的模型进行更改的正确方法是首先对运行manage.py makemigration <my_app>,然后对您的模型进行更改,然后是另一个manage.py makemigrations。
发布于 2015-06-23 20:46:34
您可能无法通过纯django 和来保存数据。我没有使用south的个人经验,但有很多提到如果这个工具。以防万一别的对你没用..。
发布于 2015-06-23 22:25:42
这是我为使事情成功所做的事情,但必须有更好的方法,所以请添加更多的答案/评论.
https://stackoverflow.com/questions/31011034
复制相似问题