2017-06-01 3 views
0

昨日私のdbテーブルが削除されました。私のアプリケーションに磨きをかけるためにlatin1_swedish_ciをutf8_general_ciに変更する必要があったためです。latin1_swedish_ciをutf8_general_ciに変更した後にdbを移行できません

(venv) C:\netbast\fastandbeauty\project>manage.py migrate 
Operations to perform: 
    Apply all migrations: admin, auth, comments, contenttypes, registration, sessions, social_django, user_content, user_profile 
Running migrations: 
    Applying social_django.0005_auto_20160727_2333...Traceback (most recent call last): 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\mysql\base.py", line 101, in execute 
    return self.cursor.execute(query, args) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 250, in execute 
    self.errorhandler(self, exc, value) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\connections.py", line 50, in defaulterrorhandler 
    raise errorvalue 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 247, in execute 
    res = self._query(query) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 411, in _query 
    rowcount = self._do_query(q) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query 
    db.query(q) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\connections.py", line 292, in query 
    _mysql.connection.query(self, query) 
_mysql_exceptions.OperationalError: (1071, 'Specified key was too long; max key length is 1000 bytes') 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "C:\netbast\fastandbeauty\project\manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line 
    utility.execute() 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\core\management\__init__.py", line 355, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\core\management\base.py", line 330, in execute 
    output = self.handle(*args, **options) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle 
    fake_initial=fake_initial, 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate 
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards 
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration 
    state = migration.apply(state, schema_editor) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\migrations\migration.py", line 129, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\migrations\operations\models.py", line 536, in database_forwards 
    getattr(new_model._meta, self.option_name, set()), 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\base\schema.py", line 353, in alter_unique_together 
    self.execute(self._create_unique_sql(model, columns)) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\base\schema.py", line 120, in execute 
    cursor.execute(sql, params) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\utils.py", line 80, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\utils\six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\django\db\backends\mysql\base.py", line 101, in execute 
    return self.cursor.execute(query, args) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 250, in execute 
    self.errorhandler(self, exc, value) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\connections.py", line 50, in defaulterrorhandler 
    raise errorvalue 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 247, in execute 
    res = self._query(query) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 411, in _query 
    rowcount = self._do_query(q) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query 
    db.query(q) 
    File "C:\netbast\fastandbeauty\venv\lib\site-packages\MySQLdb\connections.py", line 292, in query 
    _mysql.connection.query(self, query) 
django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 1000 bytes') 

私は何ができるのか分からない私は弟子だから、私はそのような問題を持っているので、その後、私は完全な、私のデータベースを移行することができません。私は答えを見つけましたが、それは私を助けませんでした。

私の悪い英語を申し訳ありません。

PS。サーバーを起動すると実行されますが、social-djangoは機能しません。そのアプリだけが移行できません。

すべてのベスト、 Dinson

+0

「fastandbeauty.social_auth_association」テーブルがありますか? – Adder

+0

私は思っていません。私のすべてのテーブルを見てください:https://s1.postimg.org/8e0wzf9hxr/Przechwytywanie.png – Dinson

+0

「私はすべてのテーブルを削除しました」と言ったとき、あなたはあなたが 'migration folders'から' migration files'を削除したことを意味しますか?マイグレーションを試みましたか?これはあなたの開発データベースですか、それに機密データがありますか? – PetarP

答えて

0

私は今問題がありません。あなたはそれを修正するために何ができますか?

あなたは(あなたのSQL内のconfファイル)のmy.iniに行くとMYISAMにヘルプみんなのため

default_tmp_storage_engine=MYISAM 

default-storage-engine=InnoDB 

に感謝を変更する必要があります!

0

免責事項:私はこのテーマに関する専門家ではない、私はちょうど私の現在の練習を述べていて、ここでの提案は、あなたがきた最終的にはちょうど提案ですあなたがそれを使用するかどうかを決定してください。あなたがmysqlモニターを入力した後、あなたのfastandbeautyデータベースがまだSHOW_DATABASE;

  • 場合を入力して存在している場合、あなたがチェックし

    • mysql -u root
    • は行ことタイプしてみてください、あなたの端末では、問題を解決してみましょうデータベースはまだそこにありますDROP DATABASE fastandbeauty;
    • とそれを削除し、すべてのリグがある場合はCREATE SCHEMA fastandbeauty DEFAULT CHARACTER SET utf8を入力して新しいデータベースを再作成して作成しますHTモニターがメッセージQuery OK, 1 row affected (0.00 sec)を省略しなければならない、そのあとは、再びSHOW_DATABASEを入力すると、データベースが
    • が存在するかどうかを確認\q
    • を入力してmysql monitorを残して、あなたは新しいfastandbeauty databaseを作成する必要がありますpython manage.py migrate

    を行うことができますし、あなたはそれに取り組むことができます。

    は現在、いくつかの将来の参照:

    私はあなたが手動でDBを作成/削除する必要があり、このようなことが発生しないように、あなたは現地生産に開発データベースを使用していないお勧めします。

    あなたはdumpのデータをファイルに保存できます。そのファイルを使用して、ローカル開発用のデータを保存します。それの使い方?

    さてあなたは、新しいgit branchを作成し、それを​​のようなものに名前を付け、あなたが将来的にこのブランチ上で動作するので、その後、あなただけのこのブランチ用に新しいデータベースを作成し、データベースfast_and_beauty12を呼び出すことができ、ちょうど私の手順を行うことができます「VEのすべての準備について説明していますが、あなたのdump fileを保つフォルダにこの第1のmigrationcd前:

    • mysql -u root -p fast_and_beauty_12 < DumpFastAndBeauty.sql - これは新しいと作成fast_and_beauty_12新鮮なデータベースにデータをダンプします
    • は私を行きますあなたのsetting dbファイルNTO、あなたはそうfastandbeautyを作成したことを新しいものにデータベース名を変更>>fast_and_beauty12あなたは新鮮なを持っていますので、あなたが
    • それを使用することができ、その後、あなたはこれによりpython manage migrate.py

    を行ってみませんかそのデータベースgit branchのためにあなたはあなたのデータベースをdevデータベースに害を及ぼすことを心配することなく作業することができます。

    注:それは物事が悪くなりますので、あなたは、その枝から新しいmigrationファイルはコミットされませんあなたがgit stashを意志

    。将来の仕事のためにそれらをあなたがmigrationsファイルを隠したら

    が戻っsetting.pyに行くと、あなたにあなたの名前local databaseを変更development database名前そうfast_and_beauty12fastandbeautyに、development branchに新しい変更を移行し、それは必要がありますので、あなたは、

    python manage.py migrateを行うことができますdevelopment databaseに新しいデータを入力してください。

    ローカル開発用の新しいブランチを作成するたびに、新しい作業用データベースを作成することです。最初は少し混乱しますが、しばらくしてから理解してください。もしあなたがあなたのデータベースで作業しないなら、潜在的にこれを行う必要はありませんが、それでも良い方法だと思います。

  • +0

    端末からのエラーは最初のポストで更新されます。気を付けて。 – Dinson

    関連する問題