我有這樣定義的表的MySQL數據庫:MySQL的自動增量主鍵造成價值數錯配和外鍵錯誤
: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;
我試圖插入到這個表像這樣
INSERT INTO chug_dedup_instances VALUES ("Swimming", "Swimming");
這將返回一個錯誤:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
如果刪除了chug_dedup_instance_id主鍵,那麼第e插入工作正常。如果我明確給出ID值,它也可以工作:
mysql> INSERT INTO chug_dedup_instances VALUES ("Swimming", "Swimming", 0);
Query OK, 1 row affected (0.00 sec)
這對我來說似乎是錯誤的:應該不是數據庫提供的關鍵值?我不認爲這是PHP, MySQL error: Column count doesn't match value count at row 1的重複,因爲我問爲什麼自動增量字段不會自動添加,因爲我相信它應該是。
我試着刪除主鍵,而是採用在兩個主要價值的唯一密鑰:
UNIQUE KEY uk_chug_dedup_instances(left_chug_name, right_chug_name))
我發現,當我這樣做,我不能從源表(chugim)刪除兩個外鍵參比數據庫報告,約束被打破:
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)
我本來期望的子表的字段進行更新,因爲表中有「ON UPDATE CASCADE」。
我已經複製下面的源表(「chugim」)定義。任何幫助這些問題將不勝感激!
CREATE TABLE IF NOT EXISTS chugim(
name varchar(50) NOT NULL,
group_id int,
FOREIGN KEY fk_group(group_id) REFERENCES groups(group_id)
ON DELETE SET NULL
ON UPDATE CASCADE,
max_size int NULL,
min_size int NULL DEFAULT 0,
description varchar(2048),
UNIQUE KEY uk_chugim(name, group_id),
chug_id int NOT NULL AUTO_INCREMENT PRIMARY KEY)
COLLATE utf8_unicode_ci
ENGINE = INNODB;
「列數不匹配值計數」非常簡單。您需要爲每列提供一個值。如果它是一個自動增量列,那麼可以使用'NULL'作爲值。 – miken32
[#1136 - 列計數與第1行的值計數不匹配]的可能重複(http://stackoverflow.com/questions/16293681/1136-column-count-doesnt-match-value-count-at-row -1) –
[PHP,MySQL錯誤:列計數與第1行的值計數不匹配]的可能重複(http://stackoverflow.com/questions/5931900/php-mysql-error-column-count-doesnt- match-value-count-at-row-1) – Jocelyn