What does the MySQL mean by “Column count doesn't match value count at row 1”

本秂侑毒 提交于 2020-05-24 05:19:09

问题


This is the message I'm getting

ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1

This is my whole code. Where is my mistake?

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

回答1:


Your employee table has 7 columns, but you are giving 8 values for insert, which generates the error message that you are getting.

A good habit is to list the columns for insert in the statement. This makes this type of error much easier to spot, since you don't need to look back at the definition of the table (it also prevents your query from failing if you ever add new columns to the table at some point in the future - or drop existing columns).

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

Side note: unquoted identifier first-name, that can be seen in the create table statement for employee, is not valid - because it contains a dash (-). I assume that's a typo and you meant an underscore instead (first_name).



来源:https://stackoverflow.com/questions/61394224/what-does-the-mysql-mean-by-column-count-doesnt-match-value-count-at-row-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!