mysql插入空日期报错_MYSQL timestamp NOT NULL插入NULL的报错问题
时间: 2024-02-11 13:05:57 浏览: 73
如果你在 MYSQL 中定义了一个 timestamp 列并且设置了 NOT NULL 属性,那么当你尝试向该列插入 NULL 值时就会报错。
解决该问题的方法有两种:
1. 将该列的属性修改为 NULL。
```sql
ALTER TABLE table_name MODIFY column_name timestamp NULL;
```
2. 在插入数据时使用默认值或者当前时间来代替 NULL 值。
```sql
INSERT INTO table_name (column1, column2, timestamp_column) VALUES ('value1', 'value2', NOW());
```
或者
```sql
INSERT INTO table_name (column1, column2, timestamp_column) VALUES ('value1', 'value2', DEFAULT);
```
相关问题
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。
阅读全文