Lösung für Fremdschlüsselfehler bei der MySQL-Tabellenerstellung

Lösung für Fremdschlüsselfehler bei der MySQL-Tabellenerstellung

Datenbanktabelle A:

Tabelle erstellen Task_Desc_Tab
(
  id INT(11) PRIMARY KEY NOT NULL COMMENT 'Primärschlüssel automatisch inkrementieren' AUTO_INCREMENT,
  <strong>Taskname</strong> VARCHAR(200) NOT NULL COMMENT 'Taskname',
  sqlname VARCHAR(20) NOT NULL COMMENT 'SQL-Dateiname',
  params VARCHAR(5000) NOT NULL COMMENT 'Taskparameter im Format eines JSON-Strings',
  updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Aktualisierungszeitpunkt',
  detail VARCHAR(3000) COMMENT 'Einige beschreibende Informationen zur Aufgabe, nur für Notizen'
)
 ENGINE = InnoDB
 STANDARD-ZEICHENSATZ = utf8;

Datenbank B:

Tabelle erstellen exec_plan_tab
(
  id INT(11) PRIMARY KEY NICHT NULL AUTO_INCREMENT,
  <strong>Taskname</strong> VARCHAR(200) NICHT NULL,
  Startdatum DATE NICHT NULL,
  Enddatum DATE NICHT NULL,
  Aktualisierungszeit TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT exec_plan_tab_task_desc_tab_taskname_fk FOREIGN KEY (Aufgabenname) REFERENZEN task_desc_tab (Aufgabenname)
)
 ENGINE = InnoDB
 STANDARD-ZEICHENSATZ = utf8;

Ziel: Erstellen Sie eine Tabelle, sodass der Taskname in Tabelle B ein Fremdschlüssel ist. Beziehen Sie sich auf das Feld Taskname in Tabelle A. Beim Erstellen der Tabelle wird der folgende Fehler gemeldet:

[2018-07-19 15:02:29] [HY000][150] Erstellen der Tabelle 'daxin/#sql-5d_30' mit Fremdschlüsseleinschränkung ist fehlgeschlagen. Es gibt keinen Index in der referenzierten Tabelle, in dem die referenzierten Spalten als erste Spalten erscheinen.
[2018-07-19 15:02:29] [HY000][1215] Fremdschlüsseleinschränkung kann nicht hinzugefügt werden
[2018-07-19 15:02:29] [HY000][1215] Fremdschlüsseleinschränkung kann nicht hinzugefügt werden

Nach der Fehlerbehebung haben wir die Ursache des Problems gefunden: Der Taskname in Tabelle A muss mit dem Feld UNIQUE geändert werden, um die Eindeutigkeit des Datensatzes sicherzustellen und Mehrdeutigkeiten bei Referenzierungen durch Tabelle B zu vermeiden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • MySQL erstellt in der Praxis drei Beziehungstabellen
  • So erstellen Sie schnell eine Testdatentabelle mit 8 Millionen Einträgen in MySQL
  • MySQL und PHP Grundlagen und Anwendungsthemen: Erstellen von Datenbanktabellen
  • Python speichert Daten vom Typ „dict dictionary“ in MySQL und erstellt automatisch Tabellen und Spalten
  • MySQL lernen, Datenbanken und Tabellen-DDL zu erstellen und zu bedienen für Anfänger
  • Der erste Schritt beim Einstieg in die MySQL-Datenbank besteht darin, eine Tabelle zu erstellen
  • So erstellen Sie eine Tabelle in MySQL und fügen Feldkommentare hinzu
  • Freigabe des MySQL-Befehls für die Tabellenerstellung

<<:  js, um einen gleitenden Karusselleffekt zu erzielen

>>:  Verwendung des Linux-Crontab-Befehls

Artikel empfehlen

Ein Beispiel zum Schreiben eines großen Sonnenwettersymbols in reinem CSS

Wirkung Das Wirkungsdiagramm sieht wie folgt aus ...

Detaillierte Erklärung des JavaScript-Prototyps und Beispiele

Inhaltsverzeichnis Die Beziehung zwischen der Kon...

In einem Artikel erfahren Sie, wie Sie mit js den Sperrfeuereffekt erzielen

Inhaltsverzeichnis Erstellen Sie eine neue HTML-D...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

Einführung in die grundlegenden TypeScript-Typen

Inhaltsverzeichnis 1. Grundtypen 2. Objekttyp 2.1...

Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden

Zusammenfassen 1. Ähnlichkeiten Beide können den ...

Eine kurze Diskussion über die Verwendung der Web Storage API

Inhaltsverzeichnis 1. Lokale Speichertechnologie ...

So installieren Sie MySQL 5.7 unter Windows

Laden Sie zuerst die komprimierte Version von MyS...

So legen Sie Listenstilattribute in CSS fest (lesen Sie einfach diesen Artikel)

Eigenschaften des Listenstils Es gibt 2 Arten von...

IIS 7.5 verwendet das URL-Rewrite-Modul, um eine Webseitenumleitung zu erreichen

Wir alle wissen, dass Apache in der Konfiguration...

Verwenden von NTP zur Zeitsynchronisierung in Ubuntu

NTP ist ein TCP/IP-Protokoll zur Zeitsynchronisie...

Vue muss Wissenspunkte lernen: die Verwendung von forEach()

Vorwort Bei der Frontend-Entwicklung stoßen wir h...

Ein kurzer Vortrag über JavaScript Sandbox

Vorwort: Apropos Sandboxen: Wir denken vielleicht...