Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 检查是否需要合并迁移,不需要数据库_Python_Django_Django Migrations - Fatal编程技术网

Python 检查是否需要合并迁移,不需要数据库

Python 检查是否需要合并迁移,不需要数据库,python,django,django-migrations,Python,Django,Django Migrations,要检查是否需要合并迁移,我可以运行manage.py makemigrations--check或manage.py makemigrations--dry run 但是,这两种方法都需要数据库启动。如果它不向上,它会出错,比如 django.db.utils.OperationalError:(2002,“无法通过套接字连接到本地MySQL服务器”/var/lib/MySQL/MySQL.sock'(2)”) 从理论上讲,由于使用同一父级的两次迁移会出现合并迁移问题,因此不需要数据库实例来检查

要检查是否需要合并迁移,我可以运行
manage.py makemigrations--check
manage.py makemigrations--dry run

但是,这两种方法都需要数据库启动。如果它不向上,它会出错,比如

django.db.utils.OperationalError:(2002,“无法通过套接字连接到本地MySQL服务器”/var/lib/MySQL/MySQL.sock'(2)”)

从理论上讲,由于使用同一父级的两次迁移会出现合并迁移问题,因此不需要数据库实例来检查这种情况

我需要这个,因为我想让我的CI检查这个案例。我可以启动docker数据库,但对于逻辑上不相关的东西来说,这是额外的工作。我也确信有人对在他们的CI中检查这一点感兴趣,他们不想处理集装箱化


有没有人找到一种简单的方法来检查迁移合并冲突,而不需要启动数据库?

因为目标是运行
makemigrations--dry
,而不需要启动mysql数据库,我想到的最简单的解决方法是创建一个名为
makemigrations\u settings.py
的新设置文件,该文件覆盖数据库以使用内置的sqlite数据库

from your_main_settings import *
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database_name',
        'USER': 'your_mom',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
}
然后你就可以跑了

python manage.py makemigrations --check --settings yourapp.makemigrations_settings
或者,你可以做一些不那么优雅的事情,比如

if (sys.argv[0:2] == ['manage.py', 'makemigrations']
    and ('--dry-run' in sys.argv or '--check' in sys.argv)):
            DATABASES = {
                'default' : {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': 'database_name',
                    'USER': 'your_mom',
                    'PASSWORD': '',
                    'HOST': '',
                    'PORT': '',
                }
            }