Frage

MySQL gibt mir leid, wenn ich versuche, eine bestimmte Tabelle in einer bestimmten Datenbank zu erstellen; Ich glaube, das Problem ist, dass irgendwo MySQL einige Datensätze des Tabellenfremdschlüssels hat und versucht immer wieder die Einschränkung zu überprüfen, wenn ich versuche, um die Tabelle zu erstellen.

Die betreffende Datenbank ist für die Umwelt-Test und wird durch das Dumping der prod DB, Fallenlassen der Test DB, die Erstellung der Test DB wieder und dann die Anwendung des prod DB-Dump auf den neuen Test DB.

periodisch aufgefrischt

Doch gestern Abend, als ich diesen Vorgang zu tun, habe ich plötzlich in MySQL errno lief: 121, die in der Regel auf einen falschen Fremdschlüssel verwendet ist ... Wenn ich mit einem anderen Tisch defnition versuchen, ohne einen Schlüssel zu spezifizieren, erhalte ich errno: 150 statt. dies jedoch nur, tritt auf, wenn ich versuche, den Dump in eine neue Datenbank von genau dem gleichen Namen wie das alte zu übernehmen. Wenn ich eine Datenbank mit einem anderen Namen von dem alten (auf denselben Server noch) erstellen und das Speicher-Abbild anwenden, gibt es kein Problem.

In der Tat kann ich nicht einmal eine Tabelle erstellen, der genau den gleichen Namen ohne Schlüssel überhaupt noch in einer völlig neuen Datenbank.

Dieses Beispiel zeigt das Problem

mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)

mysql> connect test_db;
Connection id:    1590
Current database: test_db

mysql> create table client_feed_group(id int);
ERROR 1005 (HY000): Can't create table './test_db/client_feed_group.frm' (errno: 150)
mysql> create database new_db_name;
Query OK, 1 row affected (0.00 sec)

mysql> connect new_db_name;
Connection id:    1591
Current database: new_db_name

mysql> create table client_feed_group(id int);
Query OK, 0 rows affected (0.01 sec)

Ich habe fiel bereits die TEST_DB Datenbank; Dies sollte alle Tabelle und alle Datensätze entfernen. Ich schaffe es dann, eine Verbindung zu ihm und versuchen, die alte Tabelle client_feed_group zu schaffen; Ich erhalte eine Fehlermeldung. Ich erstelle eine andere Datenbank mit einem anderen Namen und folgen Sie den gleichen Schritten; dieses Mal gibt es kein Problem.

War es hilfreich?

Lösung

Es erscheint das gleiche wie dieser MySQL Bug zu sein.

Das Verfahren befindet sich weit unten in den Kommentaren für mich gearbeitet, das heißt

  • Erstellen Sie die Tabelle wieder das gleiche Schema wie die alten verwenden, aber mit einer MyISAM-Engine
  • Verwendung von ALTER TABLE den Motor innodb
  • ändern

erscheinen danach die Dinge richtig zu arbeiten; Ich kann nun die Datenbank löschen und führen Sie eine vollständige ohne Probleme wieder herstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top