Heim  >  Artikel  >  Datenbank  >  Was tun, wenn MySQL keinen Fremdschlüssel hinzufügen kann?

Was tun, wenn MySQL keinen Fremdschlüssel hinzufügen kann?

藏色散人
藏色散人Original
2023-02-16 10:15:573437Durchsuche

Lösung für MySQL-Fehler beim Hinzufügen von Fremdschlüsseln: 1. Überprüfen Sie, ob die Typen oder Größen der beiden Felder übereinstimmen, und ändern Sie sie. 2. Erstellen Sie einen Index für das Feld, in dem der Fremdschlüssel festgelegt ist 4. Überprüfen Sie, ob der Fremdschlüsselname eindeutig ist, und ändern Sie ihn. 5. Ändern Sie den Kaskadenattributwert oder setzen Sie das Feldattribut so, dass es Null usw. zulässt.

Was tun, wenn MySQL keinen Fremdschlüssel hinzufügen kann?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, MySQL Version 5.7, Dell G3-Computer.

Was soll ich tun, wenn MySQL keinen Fremdschlüssel hinzufügen kann?

Fehler bei der Erstellung von MySQL-Fremdschlüsseln

Zuallererst: Wenn Daten in mehrere Tabellen eingefügt wurden, die sich auf den Fremdschlüssel beziehen, kann dies dazu führen, dass das Einfügen des Fremdschlüssels fehlschlägt.

Beim Erstellen von Fremdschlüsseln in MySQL treten Probleme auf Wenn es fehlschlägt, liegt das daran, dass wir in MySQL auf viele Details achten müssen. Ich habe die Informationen zusammengefasst und überprüft und die folgenden häufigen Gründe aufgeführt.

1. Die Typen oder Größen der beiden Felder stimmen nicht genau überein. Wenn einer beispielsweise int(10) ist, muss der Fremdschlüssel auch auf int(10) und nicht auf int(11) und nicht auf tinyint gesetzt werden. Darüber hinaus müssen Sie auch feststellen, ob eines der beiden Felder signiert und das andere unsigniert ist (d. h. unsigniert). Weitere Informationen zu signiert und unsigniert finden Sie unter: http://www. verysimple.com/blog/?p=57

2. Das Feld, das versucht, einen Fremdschlüssel festzulegen, ist nicht indiziert oder kein Primärschlüssel. Wenn einer davon nicht der Primärschlüssel ist, müssen Sie zunächst einen Index dafür erstellen.

3. Eine oder zwei der Tabellen sind MyISAM-Engine-Tabellen. Wenn Sie Fremdschlüsseleinschränkungen verwenden möchten, muss die Tabelle zur InnoDB-Engine gehören (tatsächlich tritt dieser Fehler überhaupt nicht auf, wenn beide Tabellen zur MyISAM-Engine gehören, aber der Fremdschlüssel wird nicht generiert, sondern nur der Index). erstellt werden) Sie müssen den Engine-Typ der Tabelle überprüfen.

4. Die Namen von Fremdschlüsseln können nicht wiederholt werden. Sie sollten Ihre Datenbank überprüfen, um sicherzustellen, dass die Fremdschlüsselnamen eindeutig sind, oder Sie können nach dem Schlüsselnamen ein paar zufällige Zeichen hinzufügen, um zu testen, ob dies die Ursache ist.

5. Möglicherweise haben Sie ON DELETE SET NULL eingestellt, aber die zugehörigen Schlüsselfelder sind auf NOTS NULL-Werte gesetzt. Sie können das Problem lösen, indem Sie den Wert des Kaskadenattributs ändern oder das Feldattribut so einstellen, dass es Null zulässt.

6. Bitte stellen Sie sicher, dass Ihre Zeichensatz- und Sortieroptionen auf Tabellen- und Feldebene konsistent sind.

7. Möglicherweise haben Sie einen Standardwert für den Fremdschlüssel festgelegt, z. B. default=0.

8. In der ALTER-Anweisung liegt ein Syntaxfehler vor

Wenn ein Fehler auftritt, überprüfen Sie sorgfältig das Design der Datenbanktabellen und -felder. Ich empfehle außerdem, dass jeder versucht, Tools zum Entwerfen und Erstellen von Datenbanken zu verwenden, um die Fehlerwahrscheinlichkeit zu verringern.

Empfohlenes Lernen: „MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn MySQL keinen Fremdschlüssel hinzufügen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn