无法获取 Django 1.7 迁移来检测对我的数据库的正确更改。
Cannot get Django 1.7 Migrations to detect proper changes to my DB.
我有一个生产 Web 项目 运行 MySQL 数据库中有大量数据。我正在尝试通过对名为 "enterlink." 的应用程序进行一些更改来更新数据库 我已经在现有模型中创建了新元素并完全创建了新模型。在这次迁移之前,我从未接触过数据库的架构,因为最初 运行ning syncdb 是为了创建它。当我 运行: "python manage.py makemigrations enterlink" 出现以下输出(图片)。我的问题是,为什么会这样?数据库已经包含了它在图片中列出的所有模型,那么为什么要注册这些模型列表呢?当我通过执行 "python manage.py migrate" 或 "python manage.py migrate --fake enterlink"(再次显示图片)来完成迁移时,我得到了显示的输出,但我的数据库架构与旧数据库相同,并且任何新代码都会产生错误。谁能告诉我可能是什么问题?如果有任何建议,我将不胜感激。这非常令人沮丧,因为我不确定我错过了什么。
我也是 schemamigration 的新手,但我会解释它是如何为我工作的:
首先你创建应用然后
./manage.py sycndb,所以创建了表然后你可以
./manage.py makemigrations myapp --initial
所以现在创建了初始迁移,您应该应用它们
./manage.py 迁移我的应用程序
现在您可以更改您的模型:添加、更改字段,任何您想要的,然后
./manage.py makemigrations myapp --auto
这将为更改创建迁移,现在您需要应用它们
enter code here
./manage.py 迁移我的应用程序
所以这实际上会在 db
中创建新表
你所做的是在运行宁python manage.py makemigrations myapp
和python manage.py migrate myapp
之前运行命令python manage.py syncdb
。这就是为什么 syncdb
创建了数据库架构并且迁移是伪造的,因为架构已经存在。我会建议使用 python manage.py makemigrations myapp
和 python manage.py migrate myapp
而不要使用 syncdb
因为它在 Django 1.7 中被弃用了。
如果您更改模型中的任何内容,只需 运行 makemigrations
和 migrate
命令。 Syncdb 不是必需的。
这个问题和相关答案让我很感兴趣。因此,我想分享我在维护实时数据库和迁移方面的经验。
在 django1.5.5 中测试
正在初始化数据库:
./manage.py syncdb --noinput
./manage.py migrate
./manage.py syncdb
现在我已经创建了数据库。
正在为应用迁移:
./manage.py schemamigration myapp --initial
./manage.py migrate myapp --fake
- 现在对您的模型进行必要的更改
./manage.py schemamigration myapp --auto
./manage.py migrate myapp
我有一个生产 Web 项目 运行 MySQL 数据库中有大量数据。我正在尝试通过对名为 "enterlink." 的应用程序进行一些更改来更新数据库 我已经在现有模型中创建了新元素并完全创建了新模型。在这次迁移之前,我从未接触过数据库的架构,因为最初 运行ning syncdb 是为了创建它。当我 运行: "python manage.py makemigrations enterlink" 出现以下输出(图片)。我的问题是,为什么会这样?数据库已经包含了它在图片中列出的所有模型,那么为什么要注册这些模型列表呢?当我通过执行 "python manage.py migrate" 或 "python manage.py migrate --fake enterlink"(再次显示图片)来完成迁移时,我得到了显示的输出,但我的数据库架构与旧数据库相同,并且任何新代码都会产生错误。谁能告诉我可能是什么问题?如果有任何建议,我将不胜感激。这非常令人沮丧,因为我不确定我错过了什么。
我也是 schemamigration 的新手,但我会解释它是如何为我工作的:
首先你创建应用然后
./manage.py sycndb,所以创建了表然后你可以
./manage.py makemigrations myapp --initial
所以现在创建了初始迁移,您应该应用它们
./manage.py 迁移我的应用程序
现在您可以更改您的模型:添加、更改字段,任何您想要的,然后
./manage.py makemigrations myapp --auto
这将为更改创建迁移,现在您需要应用它们
enter code here
./manage.py 迁移我的应用程序
所以这实际上会在 db
你所做的是在运行宁python manage.py makemigrations myapp
和python manage.py migrate myapp
之前运行命令python manage.py syncdb
。这就是为什么 syncdb
创建了数据库架构并且迁移是伪造的,因为架构已经存在。我会建议使用 python manage.py makemigrations myapp
和 python manage.py migrate myapp
而不要使用 syncdb
因为它在 Django 1.7 中被弃用了。
如果您更改模型中的任何内容,只需 运行 makemigrations
和 migrate
命令。 Syncdb 不是必需的。
这个问题和相关答案让我很感兴趣。因此,我想分享我在维护实时数据库和迁移方面的经验。
在 django1.5.5 中测试
正在初始化数据库:
./manage.py syncdb --noinput
./manage.py migrate
./manage.py syncdb
现在我已经创建了数据库。
正在为应用迁移:
./manage.py schemamigration myapp --initial
./manage.py migrate myapp --fake
- 现在对您的模型进行必要的更改
./manage.py schemamigration myapp --auto
./manage.py migrate myapp