MySQL中的 "第1行的列数与值数不匹配 "是什么意思?

问题描述 投票:0回答:1

这是我收到的信息

ER_WRONG_VALUE_COUNT_ON_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);
mysql sql sql-insert create-table
1个回答
1
投票

你的 employee 表有7列,但你却给了8个插入值,这就产生了你所得到的错误信息。

一个好的习惯是将列列出 insert 语句中。这使得这种类型的错误更容易被发现,因为你不需要回头看表的定义(这也防止了你的查询失败,如果你曾经在未来的某个时候向表添加新的列--或者删除现有的列)。

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);

附注:未引用的标识符 first-name,可以看出,在 create table 声明 employee,是无效的--因为它包含一个破折号(-). 我想这是一个错别字,你的意思是下划线代替(first_name).

© www.soinside.com 2019 - 2024. All rights reserved.