Ich habe eine MySQL Datenbank mit einer Tabelle wie folgt definiert:MySQL Autoinkrement Primärschlüssel verursacht Zählwertes Mismatch und Fremdschlüsselfehler
CREATE TABLE IF NOT EXISTS chug_dedup_instances(
left_chug_name varchar(50) NOT NULL,
FOREIGN KEY fk_left_chug_name(left_chug_name) REFERENCES chugim(name)
ON DELETE CASCADE
ON UPDATE CASCADE,
right_chug_name varchar(50) NOT NULL,
FOREIGN KEY fk_right_chug_name(right_chug_name) REFERENCES chugim(name)
ON DELETE CASCADE
ON UPDATE CASCADE,
chug_dedup_instance_id int NOT NULL AUTO_INCREMENT PRIMARY KEY)
COLLATE utf8_unicode_ci
ENGINE = INNODB;
I wie diese in dieser Tabelle einzufügen versucht:
INSERT INTO chug_dedup_instances VALUES ("Swimming", "Swimming");
Dies gibt einen Fehler zurück:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Wenn ich entfernen Sie die chug_dedup_instance_id Primärschlüssel, dann th e einfügen funktioniert gut. Es funktioniert auch, wenn ich den ID-Wert explizit gebe:
mysql> INSERT INTO chug_dedup_instances VALUES ("Swimming", "Swimming", 0);
Query OK, 1 row affected (0.00 sec)
Das scheint mir falsch: sollte nicht die Datenbank den Schlüsselwert liefern? Ich denke nicht, dass dies eine Kopie von PHP, MySQL error: Column count doesn't match value count at row 1 ist, weil ich frage, warum das Auto-Inkrement-Feld nicht automatisch hinzugefügt wird, wie ich glaube, dass es sein sollte.
Ich habe versucht, den Primärschlüssel zu entfernen und stattdessen einen eindeutigen Schlüssel auf die beiden wichtigsten Werte mit:
UNIQUE KEY uk_chug_dedup_instances(left_chug_name, right_chug_name))
Ich finde, dass, wenn ich das tue, kann ich nicht aus der Quelltabelle (chugim) löschen, die beiden Fremdschlüssel referenz die Datenbank berichtet, dass die Einschränkung gebrochen:
Cannot add or update a child row: a foreign key constraint fails (`camprama_chugbot_db`.`chug_dedup_instances`, CONSTRAINT `chug_dedup_instances_ibfk_2` FOREIGN KEY (`right_chug_name`) REFERENCES `chugim` (`name`) ON DELETE CASCADE ON UPDATE CASCADE)
ich das Kind Tabellenfelder erwartet hätte aktualisiert werden, da die Tabelle „ON UPDATE CASCADE“ hat.
Ich habe die Quellentabelle ("Chugim") Definition unten kopiert. Jede Hilfe mit einer dieser Fragen wäre willkommen!
"Spaltenanzahl stimmt nicht mit Wert überein" ist ziemlich einfach. Sie müssen für jede Spalte einen Wert angeben. Wenn es sich um eine Autoinkrement-Spalte handelt, können Sie 'NULL' als Wert verwenden. – miken32
Mögliches Duplikat von [# 1136 - Spaltenanzahl stimmt nicht mit Wertanzahl in Zeile 1 überein] (http://stackoverflow.com/questions/16293681/1136-column-count-doesnt-match-value-count-at-row -1) –
Mögliches Duplikat von [PHP, MySQL-Fehler: Spaltenanzahl stimmt nicht mit Wertanzahl in Zeile 1 überein] (http://stackoverflow.com/questions/5931900/php-mysql-error-column-count-doesnt- Match-Value-count-at-row-1) – Jocelyn