1

私は新しい django プロジェクトに取り組んでおり、このチュートリアルに従っています。"Using South for Database Migrations" のステップで を実行しようとするpython manage.py syncdbと、次のエラーが表示されます。

(editorial)[hookedonwinter@hookedonwinter editorial (master *)]$ python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
    utility.execute()
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/core/management/__init__.py", line 77, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/south/management/commands/__init__.py", line 13, in <module>
    from south.management.commands.syncdb import Command as SyncCommand
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/south/management/commands/syncdb.py", line 18, in <module>
    from south import migration
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/south/migration/__init__.py", line 11, in <module>
    from south.models import MigrationHistory
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/south/models.py", line 4, in <module>
    class MigrationHistory(models.Model):
  File "/Users/hookedonwinter/.virtualenvs/editorial/lib/python2.6/site-packages/django/db/models/base.py", line 97, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
TypeError: Error when calling the metaclass bases
    __init__() keywords must be strings

これが私のsettings.pyファイルです: https://gist.github.com/pjhoberman/5273653

まだアプリはなく、空のプロジェクトです。それは私の単純な見落としだと思います-何か考えはありますか?


編集

コメントから:

  • 私はまだモデルを持っていません。そのチュートリアルに従って、モデル作業を行う前に南から始めようとしています。

  • バージョン:

    • ジャンゴ==1.5.1
    • 南==0.7.6
  • settings.py で south をコメントアウトすると、次のエラーが発生します。

    $ python manage.py syncdb

    TypeError: Error when calling the metaclass bases __init__() keywords must be strings


編集2

最初からやり直してdjango 1.4を使用しましたが、動作します。

編集3

Python を 2.7 に更新し、django 1.5 を使用しましたが、すべて同様に機能します。

4

6 に答える 6

1

問題は、データベース設定にある「〜」文字にあると思います。設定の 1 行目または 2 行目に入力してみて#coding=utf-8、何が起こるか見てみましょう。

それでも問題が解決しない場合は、次のようにデータベース ファイル名をmanage.pyファイルの同じディレクトリにあるものに変更します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'databasename.sql',
    }
}

あなたが投稿したチュートリアルに従って新しい環境を作成しようとしましたが、問題はありません。しかし、あなたがしようとしていたデータベース名(名前に「〜」が含まれているもの)を使用しようとすると、次のエラーが発生します。

(env) user@pc:/path >$  python manage.py syncdb --noinput
Syncing...
OperationalError: unable to open database file

そのシンボルがあなたの問題の根源だと思います...これで問題が解決したかどうか教えてください!

于 2013-04-06T04:38:23.237 に答える
1

Python を 2.7 に更新し、django 1.5 を使用しましたが、すべて同様に機能します。

実際に問題を解決した回答はありませんでした。賞金があるため、質問を削除できないため、自分で回答しています。

于 2013-04-09T20:57:24.193 に答える
0

DB構成の問題のようです。これを試してください。ファイルの上部:

import os

それから:

PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(PROJECT_DIR, 'yourdatabasename.db'),
    }
}

そして最後に、syncdb がうまくいくはずです。また、「python manage.py reset south」を試して、APP で発生する可能性のある問題を修正することもできます。これが機能しない場合は、新しい問題を開始して他のエラーを破棄することをお勧めします。

元の投稿: sqlite3 を使用した Django のセットアップ?

于 2013-04-03T00:04:11.510 に答える
0

南は非常によく文書化されており、それを通過した後は明確になると確信しています.

これがチュートリアルです。

http://south.readthedocs.org/en/0.7.6/tutorial/part1.html

それでも生活をシンプルにするために..

1) south をダウンロードして、apps ディレクトリに追加します。
2) settings.py の INSTALLED APPS に「south」を追加
3) syncdb を実行
4) $ ./manage.py schemamigration appname --initial
5) $ ./manage.py migrate appname

これは、非常に基本的な開始に必要なすべてです。

于 2013-04-02T18:40:09.203 に答える
0

Django 1.5 を実行するには Python 2.6.5+ が必要です。そのため、Django 1.4 にダウングレードするか、Python 2.7 にアップグレードすることで問題が解決しました。

https://docs.djangoproject.com/en/dev/releases/1.5/#python-compatibility

于 2013-06-12T15:19:50.597 に答える