1

背景情報: 私は django の初心者であり、python の知識が豊富で、mysql (したがって mariaDB) の初心者でもあります。次のバージョンの Windows 7 環境で作業しています。

  • ジャンゴ1.9.1
  • マリアDB 10.0.20
  • パイソン 3.4.4
  • Python 3.4 の場合は mysql-connector\Python 2.1.3

目標: django を使用して、mariaDB データベースと Web ベースのユーザー インターフェイスを構築しようとしています。mysqlで事前にデータベースを構築しており、現在、このデータベースをレガシーデータベースとして使用してdjangoプロジェクトを作成しようとしています.

問題: 次のようにモデルを django プロジェクトに取得しました。

python manage.py inspectdb > models.py

そしてそれはうまくいきました。models.py もチェックしましたが、問題ないように見えました。

ここで、次のように、django に基づいてレガシー データベースにテーブルを作成するために移行しようとすると、次のようになります。

python manage.py migrate

ネストされたエラーがたくさん発生し続けます。最後のエラーは次のとおりです。

django.db.migrations.exceptions.MigrationsSchemaMissing: Unable to create the django_migrations table (Table 'mydb'.'django_migrations' already exists. Please DISCARD the tablespace before IMPORT.)

前回の試行でテーブルがデータベース フォルダに残っていると考えましたが、削除しても役に立ちません。データベースのコマンド プロンプトから、残っている唯一のテーブルがデータベースにネイティブであることを確認しても、同じエラー メッセージが表示されます。ある時点で、推奨されているコネクタ (mysqlclient) ではないため、使用しているコネクタに問題があるのではないかと考えました。

どこかで、移行さえ必要ないことがわかりました。これは明らかに私を救うでしょうが、それが私ができる解決策であるかどうかはわかりません. 理想的には、データベースは後でオンラインで管理され、管理者アカウントを持つユーザーはそこにエントリを追加できます。それ以外の場合、データベースはデータを返すだけです。

編集: python manage.py inspectdb > models.py 行のエラー メッセージを修正しました

編集29.1。 移行を次のように実行します。

python manage.py migrate --fake

同じエラーが発生します。

django プロジェクトを削除して新たに開始した後でも、問題は解決しません。

v2 29.1 を編集します。 データベース フォルダー内の django_migrations テーブルに必要なテーブル ファイルは 1 つだけです。django_migrations.ibd と django_migrations.frm があるはずです。ただし、移行を実行すると、django_migrations.ibd というファイルが 1 つだけ残ります。

ここで同様のことが起こっていましたが、別のファイル mysqldump の問題で、復元エラー: 'Please DISCARD the tablespace before IMPORT' が発生しました。選択した回答でよく説明されています。

これは私の問題に関連していると思いますが、何が助けになり、これをどうするべきかわかりません。

v3 29.1 を編集します。 そして最後に、ファイルがdjangoエラーを出していることに気付きました。59 行目の C:\Python34\lib\site-packages\django\db\migrations\recorder.py にある django の移行レコーダーです。

def ensure_schema(self):
    """
    Ensures the table exists and has the correct schema.
    """
    # If the table's there, that's fine - we've never changed its schema
    # in the codebase.
    if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
        return
    # Make the table
    try:
        with self.connection.schema_editor() as editor:
            editor.create_model(self.Migration)
    except DatabaseError as exc:
        raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)

エラーが発生する最後の行は 59 行目です。おかしなことに、テーブルが存在する場合、関数は機能するはずです。(以前の編集のように)私が思いつくことができる唯一のことは、実際には何らかの理由で移行プロセス中にfrmファイルが作成されないことです。

なぜそれが起こるのかは、私をはるかに超えています。

4

0 に答える 0