尽管在列上指定了默认约束,但无法插入数据库

时间:2017-04-26 06:11:33

标签: mysql database

我在MySQL数据库中有以下表格:

mysql> describe student; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | dob | date | YES | | NULL | | | reg_no | varchar(20) | NO | PRI | NULL | | | department | varchar(50) | YES | | NULL | | | branch | varchar(50) | YES | | NULL | | | semester | int(11) | YES | | 1 | | +------------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec)

当我尝试插入此数据库而不指定最后一个值(即学期)时,会导致错误发生 mysql> insert into student values('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry'); ERROR 1136 (21S01): Column count doesn't match value count at row 1

为什么这不起作用?那不是具有默认约束的全部意义吗?如果在插入查询中没有指定默认值,则指定为默认值。

如果我像这样编写查询,它可以工作:
mysql> insert into student values('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry',DEFAULT); Query OK, 1 row affected (0.01 sec)

发生了什么事?我的语法错了吗?我希望能够插入记录而无需指定' DEFAULT'

2 个答案:

答案 0 :(得分:4)

如果您没有为所有表格列添加值,则应指定添加数据的列。

示例:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

所以在你的情况下,

INSERT INTO student(name, dob, regno, department, branch)
    VALUES ('John Smith','1990-01-01','123ABC','Chemistry','Organic Chemistry');

答案 1 :(得分:0)

插入默认值时语法错误,因此请使用insert into student(name,dob,reg_no,department,branch)values('John Smith','1990-01-01','123ABCF','Chemistry','Organic Chemistry');

代替该查询