gpt4 book ai didi

python manage.py migrate登陆错误

转载 作者:行者123 更新时间:2023-11-30 00:25:52 26 4
gpt4 key购买 nike

我想将我的应用程序“登陆”迁移到南方,我编写以下命令

python manage.py migrate landing

但它显示以下错误

Running migrations for landing:

  • Migrating forwards to 0003_auto__chg_field_userinput_email2. landing:0001_initial

FATAL ERROR - The following SQL query failed: CREATE TABLE landing_userinput ( id integer AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar(120) NOT NULL, email varchar(200) NOT NULL, city varchar(120) NOT NULL, timestamp datetim e NOT NULL)

The error was: (1050, "Table 'landing_userinput' already exists") ! Error found during real run of migration! Aborting.

! Since you have a database that does not support running ! schema-altering statements in transactions, we have had ! to leave it in an interim state between migrations.

! You might be able to recover with: = DROP TABLE landing_userinput CASCAD E; []

raise errorclass, errorvalue

django.db.utils.OperationalError: (1050, "Table 'landing_userinput' already exists")

请给我建议来改进这个错误。

最佳答案

不要同时使用syncdbmigrate;这会发生冲突,因为初始迁移将创建一个空白表。

如果您有一个新应用程序并希望将其交由South管理,您的操作顺序是:

  1. ./manage.py schemamigration land --initial -- 这将创建初始迁移,从而为应用程序创建表。您只需执行此操作一次
  2. ./manage.py migrateland——这将应用迁移。第一次执行此操作(使用上面的步骤 #1)时,这将在数据库中创建一个空表。

完成前两个步骤后,每当您对模型进行更改时,都可以运行以下两个命令:

  1. ./manage.py schemamigration land --auto -- 这将创建包含模型更改(迁移)的文件。

  2. ./manage.py migrate landing -- 这将应用新的迁移(这与上面的命令相同);它会影响您数据库的更改。

如果您已有应用程序,请安装South并运行syncdb来创建south自己的数据库表,然后运行./manage.py Convert_to_south yourappname;这将进行“假”迁移并将其设置为模型的最后状态。然后,按照schemamigration yourappname --automigrate 步骤操作。

就您的情况而言,您有两种选择:

  1. 删除表(如错误所示)。这也将删除所有数据。如果您正在进行开发,这是重新开始的最简单方法(如果您想为模型提供一些默认数据,还应该使用 fixtures)。

  2. 您可以使用--fake选项来欺骗south,让其认为操作已经完成。请参阅documentation了解更多。

关于python manage.py migrate登陆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com