2

Django プロジェクトには次の 2 つのアプリがあります。1 つのアプリ (プレーヤー) には、他のアプリ (チーム) を参照する ForeignKey があります。

アプリ 1 - プレーヤー/models.py

class Player(models.Model):
    name = models.CharField(max_length=100)
    team = models.ForeignKey(Team)

アプリ 2 - team/models.py

class Team(models.Model):
    name = models.CharField(max_length=100)

問題 #1 - すべてが機能しているように見えますが、実行しようとするmanage.py reset teamsと次のエラーが発生します。

Error: Error: users couldn't be reset. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin.py sqlreset users'. That's the SQL this command wasn't able to run.
The full error: (1217, 'Cannot delete or update a parent row: a foreign key constraint fails')

すべてのテーブルが InnoDB であることを確認しました。人々が修正として使用することを提案しているのを見てきましSET FOREIGN_KEY_CHECKS=0たが、これをどのように使用するのが最適かわかりませんmanage.py rest

問題 2 - mysqldump を実行すると、エラーが発生せずに MySQL データベースを復元できません。私の基本的な手順は次のとおりです。

  1. 私のデータベースをダンプします。

    mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL --compact MYDB

  2. データベースを削除し、同じ名前で新しいデータベースを作成します。

  3. データベースを復元します。

    mysql -u root -p MYDB < MYBACKUP.SQL

以上です。初めて復元しようとすると、行 12 でこのエラー ERROR 1005 (HY000) が表示されます: テーブル 'MYDB.auth_group_permissions' を作成できません (errno: 150)

2 回目 (およびそれ以降) の復元を試みると、1 行先になりますが、次のエラーが表示されます: 行 3 でエラー 1050 (42S01): テーブル 'auth_group' が既に存在します

これらのエラーは外部キー制約に関係していると思いますが、修正方法がわかりません。

私はこれが一口だったことを知っていますが、どんなアドバイスでも大歓迎です。調査結果があれば、明日ここに投稿します。

前もって感謝します!

4

1 に答える 1

0

問題 2 の解決策- したがって、データベースをダンプしてから復元する際の問題は、mysql ダンプの使用方法に関係しています ---compactフラグが問題を引き起こしています。

この行...

mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL --compact MYDB

...はず...

mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL MYDB

于 2012-07-13T15:25:08.987 に答える