python manage.py migrate 登陆错误
Posted
技术标签:
【中文标题】python manage.py migrate 登陆错误【英文标题】:python manage.py migrate landing error 【发布时间】:2014-05-18 10:15:56 【问题描述】:我想用南迁移我的应用程序“登陆”我写了以下命令
python manage.py migrate 登陆
但它显示以下错误
为登陆运行迁移:
正向迁移到 0003_auto__chg_field_userinput_email2。 登陆:0001_initial致命错误 - 以下 SQL 查询失败:CREATE TABLE
landing_userinput
(id
整数 AUTO_INCREMENT 非空主键,name
varchar(120) 非空,city
varchar(120) 非空,timestamp
datetim e 非空)错误是:(1050,“表'landing_userinput'已经存在”) !在实际运行迁移过程中发现错误!中止。
!由于您有一个不支持运行的数据库 !事务中的模式改变语句,我们有 !使其在迁移之间处于临时状态。
!您可能能够通过以下方式恢复:= DROP TABLE
landing_userinput
CASCAD E; []引发错误类,错误值
django.db.utils.OperationalError: (1050, "表 'landing_userinput' 已经存在")
请给我建议以改进此错误。
【问题讨论】:
它表示该表存在以及如何修复它。那是成功还是失败? 【参考方案1】:不要同时使用syncdb
和migrate
;这会发生冲突,因为初始迁移会创建一个空白表。
如果您有一个新应用并希望由南管理,您的操作顺序是:
./manage.py schemamigration landing --initial
-- 这将创建初始迁移,从而为应用程序创建表。您只能这样做一次。
./manage.py migrate landing
-- 这将应用迁移。第一次执行此操作时(使用上面的第 1 步),这将在数据库中创建一个空表。
完成前两个步骤后,无论何时对模型进行更改,都需要运行以下两个命令:
./manage.py schemamigration landing --auto
-- 这将创建包含模型更改(迁移)的文件。
./manage.py migrate landing
-- 这将应用新的迁移(这与上面的命令相同);它会影响对数据库的更改。
如果您已经有一个现有的应用程序,安装 south 并运行 syncdb
创建 south 自己的数据库表,然后运行 ./manage.py convert_to_south yourappname
;这将进行“假”迁移并将其设置为模型的最后状态。然后,按照schemamigration yourappname --auto
和migrate
的步骤操作。
在你的情况下,你有两个选择:
删除表(如错误所示)。这也将删除所有数据。如果您正在开发中,这是重新开始的最简单方法(如果您想为模型提供一些默认数据,也应该使用 fixtures)。
您可以使用--fake
选项来欺骗South 以为操作已经完成。请参阅documentation 了解更多信息。
【讨论】:
以上是关于python manage.py migrate 登陆错误的主要内容,如果未能解决你的问题,请参考以下文章
初试django---python manage.py makemigrations以及python manage.py migrate
运行 python manage py migrate 时出错
SyntaxError:Generator表达式必须是parenthezised / python manage.py migrate