MySQL 是什么意思 "Column count doesn't match value count at row 1"
What does the MySQL mean by "Column count doesn't match value count at row 1"
这是我收到的消息
ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1
这是我的全部代码。我的错误在哪里?
DROP TABLE student;
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
first-name VARCHAR(40),
birth_day DATE,
sex VARCHAR(1),
SALARY INT,
super_id INT,
branch_id INT
);
CREATE TABLE branch (
branch_id INT PRIMARY KEY,
branch_name VARCHAR(40),
mgr_id INT,
mgr_start_date DATE,
FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);
CREATE TABLE works_with (
emp_id INT,
client_id INT,
total_sales INT,
PRIMARY KEY(emp_id, client_id),
FOREIGN KEY(emp_id) REFERENCES employee(emp_id) ON DELETE CASCADE,
FOREIGN KEY(client_id) REFERENCES client(client_id) ON DELETE CASCADE
);
-- Corporate
INSERT INTO employee VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL, NULL);
INSERT INTO branch VALUES(1, 'Corporate', 100, '2006-02-09');
UPDATE employee
SET branch_id = 1
WHERE employee_id = 100;
INSERT INTO employee VALUES(101, 'Jan', 'Levinson', '1961-05-11', 'F', 110000, 100, 1);
您的 employee
table 有 7 列,但您为插入提供了 8 个值,这会生成您收到的错误消息。
一个好习惯是在语句中列出 insert
的列。这使得此类错误更容易被发现,因为您不需要回头查看 table 的定义(如果您向 [=24= 添加新列,它还可以防止查询失败) ] 在将来的某个时候 - 或删除现有列)。
INSERT INTO employee(emp_id, first_name, birth_day, sex, salary, super_id, branch_id)
VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL);
旁注:在 employee
的 create table
语句中可以看到的未加引号的标识符 first-name
无效 - 因为它包含破折号 (-
).我认为这是一个错字,你的意思是下划线 (first_name
)。
这是我收到的消息
ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1
这是我的全部代码。我的错误在哪里?
DROP TABLE student;
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
first-name VARCHAR(40),
birth_day DATE,
sex VARCHAR(1),
SALARY INT,
super_id INT,
branch_id INT
);
CREATE TABLE branch (
branch_id INT PRIMARY KEY,
branch_name VARCHAR(40),
mgr_id INT,
mgr_start_date DATE,
FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);
CREATE TABLE works_with (
emp_id INT,
client_id INT,
total_sales INT,
PRIMARY KEY(emp_id, client_id),
FOREIGN KEY(emp_id) REFERENCES employee(emp_id) ON DELETE CASCADE,
FOREIGN KEY(client_id) REFERENCES client(client_id) ON DELETE CASCADE
);
-- Corporate
INSERT INTO employee VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL, NULL);
INSERT INTO branch VALUES(1, 'Corporate', 100, '2006-02-09');
UPDATE employee
SET branch_id = 1
WHERE employee_id = 100;
INSERT INTO employee VALUES(101, 'Jan', 'Levinson', '1961-05-11', 'F', 110000, 100, 1);
您的 employee
table 有 7 列,但您为插入提供了 8 个值,这会生成您收到的错误消息。
一个好习惯是在语句中列出 insert
的列。这使得此类错误更容易被发现,因为您不需要回头查看 table 的定义(如果您向 [=24= 添加新列,它还可以防止查询失败) ] 在将来的某个时候 - 或删除现有列)。
INSERT INTO employee(emp_id, first_name, birth_day, sex, salary, super_id, branch_id)
VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL);
旁注:在 employee
的 create table
语句中可以看到的未加引号的标识符 first-name
无效 - 因为它包含破折号 (-
).我认为这是一个错字,你的意思是下划线 (first_name
)。