Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对于某些迁移,为什么`sqlmigrate`显示为空,或者两个方向的SQL相同?_Python_Mysql_Django_Migration - Fatal编程技术网

Python 对于某些迁移,为什么`sqlmigrate`显示为空,或者两个方向的SQL相同?

Python 对于某些迁移,为什么`sqlmigrate`显示为空,或者两个方向的SQL相同?,python,mysql,django,migration,Python,Mysql,Django,Migration,我正在升级一个遗留项目,目前仍然使用Python 2.7.18作为升级到3之前最高的Python-2。将Django从1.8.13升级到1.11.29后,项目需要一些数据库更改(未应用的迁移),我正在使用命令查看SQL语句 我有一些问题,如有任何意见,将不胜感激: 有些迁移,例如下面的0002\u logentry\u remove\u auto\u add,SQL只包含注释,我想知道为什么 对于迁移0002\u auto\u 20160226\u 1747,SQL对于向前和向后(--backw

我正在升级一个遗留项目,目前仍然使用Python 2.7.18作为升级到3之前最高的Python-2。将Django从1.8.13升级到1.11.29后,项目需要一些数据库更改(未应用的迁移),我正在使用命令查看SQL语句

我有一些问题,如有任何意见,将不胜感激:

  • 有些迁移,例如下面的
    0002\u logentry\u remove\u auto\u add
    ,SQL只包含注释,我想知道为什么
  • 对于迁移
    0002\u auto\u 20160226\u 1747
    ,SQL对于向前和向后(--backward)方向都是相同的,我还想知道1)为什么,2)这是否应该引起关注。我只想对生产数据库保持谨慎,感谢您的指点

  • 顺便说一句,这个问题是一个问题的后续。当模型更改时,需要Django迁移,但并非所有模型更改都需要SQL更改

    0002\u logentry\u remove\u auto\u add
    迁移更改
    操作时间
    字段的
    默认值
    可编辑值。不需要更改SQL架构。有一份报告证实了这一点

    我认为移民是为了我们自己。看起来根本不需要对SQL进行任何更改,但出于某种原因,Django正在两个方向上删除并添加相同的约束

    在大型数据库上,添加约束可能会导致锁,因此您可能会考虑迁移而不是运行它。不过要小心,很容易错误地使用

    ——伪造
    ,使迁移和数据库不同步。理想情况下,您应该在dev环境中测试运行迁移,然后决定是否可以只运行
    migrate
    ,或者是否需要更复杂的计划

    (venv) [user@server app]$ python manage.py sqlmigrate             admin      0002_logentry_remove_auto_add
    BEGIN;
    --
    -- Alter field action_time on logentry
    --
    COMMIT;
    
    (venv) [user@server app]$ python manage.py sqlmigrate             authtoken  0002_auto_20160226_1747
    BEGIN;
    --
    -- Change Meta options on token
    --
    --
    -- Alter field created on token
    --
    --
    -- Alter field key on token
    --
    --
    -- Alter field user on token
    --
    ALTER TABLE `authtoken_token` DROP FOREIGN KEY `authtoken_token_user_id_535fb363_fk_auth_user_id`;
    ALTER TABLE `authtoken_token` ADD CONSTRAINT `authtoken_token_user_id_35299eff_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
    COMMIT;
    
    (venv) [user@server app]$ python manage.py sqlmigrate --backwards authtoken  0002_auto_20160226_1747
    BEGIN;
    --
    -- Alter field user on token
    --
    ALTER TABLE `authtoken_token` DROP FOREIGN KEY `authtoken_token_user_id_535fb363_fk_auth_user_id`;
    ALTER TABLE `authtoken_token` ADD CONSTRAINT `authtoken_token_user_id_35299eff_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
    --
    -- Alter field key on token
    --
    --
    -- Alter field created on token
    --
    --
    -- Change Meta options on token
    --
    COMMIT;