【问题标题】:Django project Migration from SQL lite to postgres - relation "django_content_type" does not existDjango 项目从 SQLite 迁移到 postgres - 关系“django_content_type”不存在
【发布时间】:2016-10-18 18:53:25
【问题描述】:

我在 SQlite 上进行了 django 开发,现在我尝试使用 postgres 9.5 运行我的应用程序。

但是,当我运行 migrate 时,我收到了这个错误 django.db.utils.ProgrammingError:关系“django_content_type”不存在

。我正在使用 django 1.8 和 python 2.7 并在执行迁移时获取它,在运行 -fake initial 时遇到相同的错误。

我正在查看现有答案(这个问题很常见),但我没有看到适合我的明确答案。

> (mrp) C:\Users\I812624\dev\mrp\src>python manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: django_filters, autofixture, staticfiles, message
s, smart_selects, watson, django_select2, django_countries, mptt, psycopg2, main
, crispy_forms
  Apply all migrations: customer, manufacture, product, vendor, purchase, admin,
 sessions, sales, flatpages, sites, item, contenttypes, production, auth, regist
ration, inventory
Synchronizing apps without migrations:
  Creating tables...
    Creating table watson_searchentry
    Running deferred SQL...
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\__init
__.py", line 338, in execute_from_command_line
    utility.execute()
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\__init
__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\base.p
y", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\base.p
y", line 441, in execute
    output = self.handle(*args, **options)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\comman
ds\migrate.py", line 179, in handle
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)

  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\core\management\comman
ds\migrate.py", line 317, in sync_apps
    cursor.execute(statement)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\db\backends\utils.py",
 line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\db\backends\utils.py",
 line 64, in execute
    return self.cursor.execute(sql, params)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\db\utils.py", line 97,
 in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\I812624\dev\mrp\lib\site-packages\django\db\backends\utils.py",
 line 62, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "django_content_type" does not exist

【问题讨论】:

  • 您的问题实际上有两个部分:1)您如何重新创建表结构? 2)你如何移动你当前的数据?如果您只是更改数据库设置并运行 manage.py migrate,会发生什么?成功运行之后,您必须找到一种方法来迁移 SQLite 表中的数据。 Google 可能再次成为您的朋友。
  • 我只是在本地创建了 postgres 更改了 DB 的设置。删除以前的迁移并为每个应用手动运行 makemigration。然后在我运行迁移之后,我从问题中得到了错误。 (添加了从 shell 到问题的跟踪)
  • 而且我不需要迁移内容,只需要迁移结构。

标签: django


【解决方案1】:

settings.py 中的 DATABASES 部分应如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'yourdb',
        'USER': 'youruser',
        'PASSWORD': 'yourpass',
        'HOST': '',
    },
}

您的 INSTALLED_APPS 应包括 psycopg2 一旦完成并重新启动服务器,您就可以重新迁移,这应该会创建丢失的表

【讨论】:

  • 你在说什么服务器?这正是我的设置。
  • 我的意思是你更新的设置要生效你需要重启它。
  • 谢谢,但它没有帮助。这是我假设的另一件事。
  • 最简单的解决方法是 1. 使用 django-admin.py startproject projectname 创建另一个项目 2. 将新创建的 settings.py 更新为与 postgresql 兼容, 3. 使用 createdb yourdb 创建另一个数据库 4. 迁移表 5. 将原始项目的数据库切换为新创建的数据库,然后重新运行迁移。在这种情况下,您需要使用 pg_dump 备份您需要的任何数据,并使用 psql 将其读回
  • 我真的不在乎内容。你描述的这几乎就是我正在做的。我尝试在 postgres 上创建数据库结构我刚刚更新了设置文件并尝试运行迁移,如果我在设置中使用 sql lite 执行相同的操作。
【解决方案2】:

django_content_type 应该是自动创建的。 我想知道你是怎么做临时移民的 可以试试

python manage.py makemigrations

而不是一个接一个地做

【讨论】:

    【解决方案3】:

    所以在玩了之后它开始工作了。 解决方案是我没有将服务器添加到pgAdmin https://www.pgadmin.org/

    我假设 pgadmin 只是一个查看正在发生的事情的工具,但没有将 postgre 添加到 pgadmin 迁移有错误。

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2015-12-13
      • 1970-01-01
      • 2021-11-03
      • 2017-07-01
      • 2019-02-04
      • 2017-03-25
      • 2016-08-24
      • 2021-09-21
      相关资源
      最近更新 更多