Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehlercode:1005. Tabelle „...“ kann nicht erstellt werden (Fehlernummer:150)

Fehlercode:1005 – Ihr Code enthält eine falsche Primärschlüsselreferenz

Normalerweise liegt es an einem referenzierten Fremdschlüsselfeld, das nicht existiert. Es könnte sein, dass Sie einen Tippfehler haben, oder überprüfen Sie, ob es gleich sein sollte, oder es gibt eine Nichtübereinstimmung des Feldtyps. Mit Fremdschlüsseln verknüpfte Felder müssen exakt mit den Definitionen übereinstimmen.

Einige bekannte Ursachen können sein:

  1. Der Typ und/oder die Größe der beiden Schlüsselfelder stimmen nicht genau überein. Zum Beispiel, wenn einer INT(10) ist das Schlüsselfeld muss INT(10) sein sowie nicht INT(11) oder TINYINT . Sie können die Feldgröße mit SHOW bestätigen CREATE TABLE da der Abfragebrowser manchmal nur INTEGER visuell anzeigt für beide INT(10) und INT(11) . Sie sollten auch überprüfen, ob einer nicht SIGNED ist und der andere ist UNSIGNED . Beide müssen genau gleich sein.
  2. Eines der Schlüsselfelder, auf das Sie verweisen möchten, hat keinen Index und/oder ist kein Primärschlüssel. Wenn eines der Felder in der Beziehung kein Primärschlüssel ist, müssen Sie einen Index für dieses Feld erstellen.
  3. Der Fremdschlüsselname ist ein Duplikat eines bereits existierenden Schlüssels. Überprüfen Sie, ob der Name Ihres Fremdschlüssels innerhalb Ihrer Datenbank eindeutig ist. Fügen Sie einfach ein paar zufällige Zeichen am Ende Ihres Schlüsselnamens hinzu, um dies zu testen.
  4. Eine oder beide Ihrer Tabellen ist ein MyISAM Tisch. Um Fremdschlüssel verwenden zu können, müssen die Tabellen beide InnoDB sein . (Eigentlich, wenn beide Tabellen MyISAM sind dann erhalten Sie keine Fehlermeldung – der Schlüssel wird einfach nicht erstellt.) Im Abfrage-Browser können Sie den Tabellentyp angeben.
  5. Sie haben eine Kaskade ON angegeben DELETE SET NULL , aber das relevante Schlüsselfeld ist auf NOT gesetzt NULL . Sie können dies beheben, indem Sie entweder Ihre Kaskade ändern oder das Feld so einstellen, dass es NULL zulässt Werte.
  6. Stellen Sie sicher, dass die Optionen Charset und Collate sowohl auf Tabellenebene als auch auf individueller Feldebene für die Schlüsselspalten gleich sind.
  7. Sie haben einen Standardwert (d. h. default=0) in Ihrer Fremdschlüsselspalte
  8. Eines der Felder in der Beziehung ist Teil eines kombinierten (zusammengesetzten) Schlüssels und hat keinen eigenen individuellen Index. Auch wenn das Feld einen Index als Teil des zusammengesetzten Schlüssels hat, müssen Sie einen separaten Index nur für dieses Schlüsselfeld erstellen, um es in einer Einschränkung zu verwenden.
  9. Sie haben einen Syntaxfehler in Ihrem ALTER -Anweisung oder Sie haben sich bei einem der Feldnamen in der Beziehung vertippt
  10. Der Name Ihres Fremdschlüssels überschreitet die maximale Länge von 64 Zeichen.

Weitere Einzelheiten finden Sie unter:MySQL-Fehlernummer 1005 Tabelle kann nicht erstellt werden