mysql插入空日期报错_MYSQL timestamp NOT NULL插入NULL的报错问题
时间: 2024-01-22 21:17:37 浏览: 60
MySQL中,如果一个字段被定义为NOT NULL,插入NULL值时会报错。对于日期类型的字段,如果想要插入空值,可以将字段设置为允许NULL值,然后插入NULL值。
例如,如果我们有一个表test,并且有一个timestamp类型的字段create_time,我们想要插入一个空值,可以先执行以下命令:
```
ALTER TABLE test MODIFY create_time timestamp NULL;
```
这将允许create_time字段插入NULL值。然后,我们可以执行以下命令插入NULL值:
```
INSERT INTO test (create_time) VALUES (NULL);
```
插入完成后,如果我们想要再将create_time字段设置为NOT NULL,可以执行以下命令:
```
ALTER TABLE test MODIFY create_time timestamp NOT NULL;
```
这样就可以避免插入NULL值时报错的问题了。
相关问题
CREATE TABLE `test_mysql_bushu_detail` ( `rank` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '排名', `complement_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '日期', `etl_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间', ) ENGINE=InnoDB AUTO_INCREMENT=169572 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在你提供的 SQL 语句中,存在一个逗号 `,` 在最后一列之后,导致了语法错误。你可以将最后一列的逗号删除,即可解决该问题。下面是修正后的 SQL 语句:
```
CREATE TABLE `test_mysql_bushu_detail` (
`rank` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '排名',
`complement_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '日期',
`etl_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间'
) ENGINE=InnoDB AUTO_INCREMENT=169572 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
请注意,如果你的 MySQL 版本较老,可能不支持 `utf8mb4_unicode_ci` 或 `CURRENT_TIMESTAMP`,你可以根据实际情况进行修改。
CREATE TABLE `card` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `store_id` varchar(20) NOT NULL COMMENT '店铺ID', `batch_id` bigint(20) NOT NULL COMMENT '批次ID', `card_code` varchar(128) NOT NULL COMMENT '卡号', `card_type` int(6) NOT NULL COMMENT '卡券状态', `distributor` varchar(64) NOT NULL COMMENT '经销商', `mobile` varchar(64) NOT NULL COMMENT '领取电话', `publish_time` timestamp NULL DEFAULT NULL COMMENT '发行时间', `activate_time` timestamp NULL DEFAULT NULL COMMENT '激活时间', `sell_time` timestamp NULL DEFAULT NULL COMMENT '售出时间', `get_time` timestamp NULL DEFAULT NULL COMMENT '领取时间', `finish_time` timestamp NULL DEFAULT NULL COMMENT '完成时间', `card_info` varchar(512) DEFAULT NULL COMMENT '卡券备注', `create_by` varchar(15) NOT NULL COMMENT '创建人', `update_by` varchar(15) DEFAULT NULL COMMENT '修改人', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT AUTO_INCREMENT=31 CHARSET=utf8 COMMENT='卡券表'
这是一个MySQL的建表语句,创建了一个名为"card"的表,包含了卡券的相关信息,如店铺ID、批次ID、卡号、卡券状态、经销商、领取电话等等。其中,id为主键,自增长;create_time和update_time字段分别为创建时间和修改时间,均设置了默认值。表格的字符集为utf8,存储引擎为InnoDB。
阅读全文