Invalid default value for 'id'
时间: 2024-06-13 20:09:37 浏览: 219
"Invalid default value for 'id'"错误是由于在MySQL建表时,id列的默认值设置不正确导致的。在引用中的建表语句中,id列的默认值设置为0,但是由于id列是主键,因此不能设置默认值。解决方法是将id列的默认值设置为NULL,或者直接删除DEFAULT 0这一段。修改后的建表语句如下所示:
```sql
CREATE TABLE `product`(
`id` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
`pName` VARCHAR(20) NOT NULL COMMENT '产品名称',
`shortPrice` FLOAT COMMENT '价格(单位:元)',
`saleNum` INT(10) COMMENT '销售数量' DEFAULT 0
)ENGINE=INNODB CHARSET utf8;
```
相关问题
mysql timestamp invalid default value for_mysql5.7下的timestampn Error : Invalid default value for 'ti...
这个错误是因为在 MySQL 5.7 中,默认情况下,`timestamp` 类型的列不能设置为 `NULL`,而且如果你没有显式地设置默认值,MySQL 会使用 `CURRENT_TIMESTAMP` 作为默认值。
为了解决这个问题,你可以手动指定一个 `timestamp` 类型的默认值,或者在创建表时使用 `NULL` 值代替默认值。
示例:
使用手动指定默认值:
```
CREATE TABLE mytable (
id INT PRIMARY KEY,
mytimestamp TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01'
);
```
使用 `NULL` 值代替默认值:
```
CREATE TABLE mytable (
id INT PRIMARY KEY,
mytimestamp TIMESTAMP NULL
);
```
Invalid default value for 如何解决
"Invalid default value for" 是 MySQL 数据库在创建表时出现的错误,通常是因为使用了 MySQL 版本不同导致的。
如果你使用的是 MySQL 5.7 或更高版本,则需要将 sql_mode 设置为不包含 "NO_ZERO_DATE" 和 "NO_ZERO_IN_DATE" 选项。可以在 MySQL 命令行中输入以下命令:
```
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
```
或者在 my.cnf 文件中添加以下语句:
```
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
如果你使用的是 MySQL 5.6 或更早版本,则需要将默认值更改为 NULL 或合法的日期/时间值。例如,将列的默认值更改为 NULL:
```
CREATE TABLE example (
id INT PRIMARY KEY,
create_time TIMESTAMP DEFAULT NULL
);
```
或者将列的默认值更改为合法的日期/时间值:
```
CREATE TABLE example (
id INT PRIMARY KEY,
create_time TIMESTAMP DEFAULT '2021-01-01 00:00:00'
);
```
注意,这里的日期/时间值必须符合 MySQL 的日期/时间格式要求。
阅读全文