makemigrations 不识别数据库更改
makemigrations not identifying database changes
我正在使用 django
,现在我将 python 文件从 custom_fields
重命名为 fields
并更改了模型 class,然后模型class 正在使用来自 fields
文件的字段,但是当我 运行
python manage.py makemigrations
存在这样的错误:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 65, in handle
loader = MigrationLoader(None, ignore_no_migrations=True)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 170, in build_graph
self.load_disk()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 105, in load_disk
migration_module = import_module("%s.%s" % (module_name, migration_name))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/smy/wuque/projects/LinuxChat/Server/LinuxChatServer/Server/migrations/0005_auto_20151215_1223.py", line 5, in <module>
import Server.custom_fields
ImportError: No module named custom_fields
我不知道如何解决这个错误,所以我尝试删除 migrates
文件夹,但是当我再次 运行 以上命令时,无法检测到任何更改,即使我修改了模型class again.Just 显示:
No changes detected.
现在我无法修改数据库table,谁能告诉我如何解决这个问题?谢谢!
makemigrations
完成应用将直接影响数据库底层结构的更改。
重命名 python 文件不会对数据库产生任何影响,因为字段的 type 没有改变,因此不会对数据库产生任何影响数据库。您最终看到的只是 python 文件中的不同导入。
如果这是您第一次迁移该应用,您必须使用:
manage.py makemigrations myappname
完成后,您可以:
manage.py migrate
运行 项目文件夹中的 makemigrations 意味着它将查找更新与项目 settings.py 中包含的所有应用程序相关的所有表。一旦包含它,makemigrations 将自动包含该应用程序(这样可以节省大量工作,因此您不必 运行 makemigrations app_name 为 project/site 中的每个应用程序)。
如果您混淆了这些步骤中的任何一个,请阅读迁移文件。更改它们以更正您的架构或删除不需要的文件,但不要忘记更改下一个迁移文件的依赖项部分。
我正在使用 django
,现在我将 python 文件从 custom_fields
重命名为 fields
并更改了模型 class,然后模型class 正在使用来自 fields
文件的字段,但是当我 运行
python manage.py makemigrations
存在这样的错误:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 65, in handle
loader = MigrationLoader(None, ignore_no_migrations=True)
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 170, in build_graph
self.load_disk()
File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 105, in load_disk
migration_module = import_module("%s.%s" % (module_name, migration_name))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/smy/wuque/projects/LinuxChat/Server/LinuxChatServer/Server/migrations/0005_auto_20151215_1223.py", line 5, in <module>
import Server.custom_fields
ImportError: No module named custom_fields
我不知道如何解决这个错误,所以我尝试删除 migrates
文件夹,但是当我再次 运行 以上命令时,无法检测到任何更改,即使我修改了模型class again.Just 显示:
No changes detected.
现在我无法修改数据库table,谁能告诉我如何解决这个问题?谢谢!
makemigrations
完成应用将直接影响数据库底层结构的更改。
重命名 python 文件不会对数据库产生任何影响,因为字段的 type 没有改变,因此不会对数据库产生任何影响数据库。您最终看到的只是 python 文件中的不同导入。
如果这是您第一次迁移该应用,您必须使用:
manage.py makemigrations myappname
完成后,您可以:
manage.py migrate
运行 项目文件夹中的 makemigrations 意味着它将查找更新与项目 settings.py 中包含的所有应用程序相关的所有表。一旦包含它,makemigrations 将自动包含该应用程序(这样可以节省大量工作,因此您不必 运行 makemigrations app_name 为 project/site 中的每个应用程序)。
如果您混淆了这些步骤中的任何一个,请阅读迁移文件。更改它们以更正您的架构或删除不需要的文件,但不要忘记更改下一个迁移文件的依赖项部分。