4

コマンドを発行すると:

python manage.py syncdb --database=mydb

次のように出力が表示されます...

Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Traceback (most recent call last):
File "manage.py", line 14, in <module>
    execute_manager(settings)
File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 459,     in execute_manager
    utility.execute()
File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 382,     in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 196, in     run_from_argv
    self.execute(*args, **options.__dict__)
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 232, in     execute
    output = self.handle(*args, **options)
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 371, in     handle
    return self.handle_noargs(**options)
File "/usr/lib/python2.7/site-packages/django/core/management/commands/syncdb.py",     line 110, in handle_noargs
    emit_post_sync_signal(created_models, verbosity, interactive, db)
File "/usr/lib/python2.7/site-packages/django/core/management/sql.py", line 189, in     emit_post_sync_signal
    interactive=interactive, db=db)
File "/usr/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in     send
    response = receiver(signal=self, sender=sender, **named)
File "/usr/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py",     line 35, in create_permissions
    ctype = ContentType.objects.get_for_model(klass)
File "/usr/lib/python2.7/site-packages/django/contrib/contenttypes/models.py", line     42, in get_for_model
    defaults = {'name': smart_unicode(opts.verbose_name_raw)},
File "/usr/lib/python2.7/site-packages/django/db/models/manager.py", line 134, in     get_or_create
    return self.get_query_set().get_or_create(**kwargs)
File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 442, in     get_or_create
    return self.get(**lookup), False
File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 361, in get
    num = len(clone)
File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 85, in     __len__
    self._result_cache = list(self.iterator())
File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 291, in     iterator
    for row in compiler.results_iter():
File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 763,     in results_iter
    for rows in self.execute_sql(MULTI):
File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line     818, in     execute_sql
    cursor.execute(sql, params)
File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in     execute
    return self.cursor.execute(sql, params)
File "/usr/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line     337, in     execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.DatabaseError: no such table: django_content_type

基本的にdjangoの例に設定されたカスタムdbルーターがありますが、MYモデルにカスタム属性があり、デフォルトのデータベースを認識しています。私がコメントアウトしたsyncdbときに機能します:と. しばらくこの問題がありましたが、認証を開始する必要がある今まで延期していました。私のdbルーターが必要な場合は、私も投稿しますsettings.py INSTALLED_APPSdjango.contrib.authdjango.contrib.contenttypes

4

2 に答える 2

3

ここで同様の問題について説明しました: django.db.utils.IntegrityError:(1062、"重複エントリ'22-キー'content_type_id'のadd_'")

contrib.authとcontrib.contenttypesをコメントアウトする必要はありません。すべてのdjangoモデル(ユーザー、セッション、権限)がマスターと見なされる可能性のある1つのデータベースでのみ使用されていることを確認してください。

これは問題を直接解決するわけではありませんが、複数のdbおよびdbルーターを扱う場合の出発点になる可能性があります。知っておく必要があるのは、各モデルのデータベースにそのコンテンツタイプがあるということです。この問題は、djangoオブジェクト(ユーザー/セッション/権限が単一のデータベースに制限されていない)が各データベースに作成されるときに発生します。また、コンテンツタイプによってモデルが一意になるため、複数のデータベースに1つのタイプのコンテンツタイプがあると、上記の他のSOの質問で説明されている問題が発生する可能性があります。

于 2012-06-26T15:16:53.330 に答える
0

Django 1.4 では、プロジェクトの最上位フォルダー (path_to_project/you_project ではなく path_to_project/you_project/you_project) でこのコマンドを起動する必要があります。

于 2012-09-14T10:29:18.830 に答える