Django想做两次同一张桌子吗?

2024-04-26 21:06:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django有点难以理解的问题。在

我使用models.py来建模我的数据库。此数据库在生产服务器上运行。我想更改它,所以我在开发服务器上创建了一个新的数据库。当我做syncdb时,问题发生了,Django尝试创建两个相同的表,如下所示:

python manage.py syncdb

Operations to perform:
  Synchronize unmigrated apps: inventaryApp, newPrpvApp, grappelli, debug_toolbar, registration, import_export
  Apply all migrations: sitetree, sessions, admin, sites, auth, contenttypes
Synchronizing apps without migrations:
  Creating tables...
    Creating table u_institutions
    Creating table u_users
    Creating table o_organes
    Creating table o_degats
    Creating table o_validation
    Creating table o_m_determination
    Creating table o_stades_dvlpmt
    Creating table o_types
    Creating table precision_date
    Creating table t_categories
    Creating table t_etat_synonymie
    Creating table g_langues
    Creating table g_pays
    Creating table g_regions
    Creating table g_communes
    Creating table pays_langues
    Creating table newprpvapp_userprofile
    Creating table t_noms_verna
    Creating table langues_noms_verna
    Creating table maladies
    Creating table t_familles
    Creating table t_genres
    Creating table t_especes
    Creating table images
    Creating table esp_noms_verna
    Creating table t_infra_types
    Creating table t_infra_sp
    Creating table t_synonymes
    Creating table o_contexte
    Creating table o_interception
    Creating table o_hotes
    Creating table hotes_organes
    Creating table o_organismes_associes
    Creating table u_institutions

如您所见,u峎universions表是第一个创建的,也是在最后创建的。这是命令执行停止的地方,显示:

^{pr2}$

我已经验证了表在model.py中没有设置两次,而且也没有。我使用Django 1.7,和psycopg 2.6。你有什么主意吗?谢谢大家!在

编辑

我已经执行了makemigrations,一切都很好。现在它表示没有检测到任何变化,这可能是正常的。在

当我尝试migrate时,我得到:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 128, in handle
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 239, in sync_apps
    cursor.execute(statement)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 81, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 63, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "u_institutions" already exists

migrate --fake返回:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 128, in handle
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 239, in sync_apps
    cursor.execute(statement)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 81, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/hugo/DEV/.virtualenvs/env_eprpv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 63, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "u_institutions" already exists

Tags: djangoinpydevcreatingenvhomeexecute
1条回答
网友
1楼 · 发布于 2024-04-26 21:06:01

似乎您已经创建了数据库模式。请使用迁移(只要使用django1.7)。syncdb已弃用。在

python manage.py makemigrations
python manage.py migrate

如果您在这里遇到任何错误(如relation "..." already exists),请运行以下命令将这些表标记为已应用:

^{pr2}$

相关问题 更多 >