首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MYSQL 5.7表3字段DATETIME '0000-00-00 00:00:00‘如何将新结构更改为默认NULL

在MySQL 5.7中,如果要将表的某个字段的默认值从'0000-00-00 00:00:00'更改为默认为NULL,可以通过以下步骤实现:

  1. 首先,使用ALTER TABLE语句修改表结构,将字段的默认值设置为NULL。例如,假设要将字段名为column_name的字段的默认值更改为NULL,可以执行以下语句:
  2. 首先,使用ALTER TABLE语句修改表结构,将字段的默认值设置为NULL。例如,假设要将字段名为column_name的字段的默认值更改为NULL,可以执行以下语句:
  3. 其中,table_name是要修改的表名,column_name是要修改的字段名。
  4. 接下来,使用UPDATE语句将原有的'0000-00-00 00:00:00'值更新为NULL。例如,假设要更新的表名为table_name,字段名为column_name,可以执行以下语句:
  5. 接下来,使用UPDATE语句将原有的'0000-00-00 00:00:00'值更新为NULL。例如,假设要更新的表名为table_name,字段名为column_name,可以执行以下语句:
  6. 这将把所有原来的'0000-00-00 00:00:00'值更新为NULL。
  7. 最后,如果需要,可以使用ALTER TABLE语句修改表结构,将字段的默认值设置为NULL,以确保以后插入的数据默认为NULL。例如,可以执行以下语句:
  8. 最后,如果需要,可以使用ALTER TABLE语句修改表结构,将字段的默认值设置为NULL,以确保以后插入的数据默认为NULL。例如,可以执行以下语句:
  9. 这将将字段的默认值设置为NULL。

这样,就可以将MYSQL 5.7表中某个字段的默认值从'0000-00-00 00:00:00'更改为默认为NULL。请注意,以上步骤仅适用于MySQL 5.7版本,其他版本可能会有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 8.0 timestamp引发的狗血剧情

接下来查看一下结构: CREATE TABLE `jj_xxxx` ( .......; 忽然考虑到了数据库版本的差异;迁移的环境是MySQL 8.0版本,而线上环境是5.7版本,两个版本中参数explicit_defaults_for_timestamp 设置的默认值是不一样的; 关于...MySQL 8.0版本时间类型详细可参考:MySQL 8.0中DATE,DATETIME和 TIMESTAMP类型和5.7之间的差异 原因: explicit_defaults_for_timestamp...3、非第一列timestamp字段,如果不强制指定默认值,DEFAULT ‘0000-00-00 00:00:00’ 4、往该列中插入null值,会自动转化为默认值; explicit_defaults_for_timestamp...这样的转化,如果该timestamp字段默认值,会造成原本insert 该timestamp字段value为null的语句会插入失败,影响业务; 2、datetime default null 转成

1.4K20

导入数据库时报错1067 – Invalid default value for ‘field’

,comment_date这个字段默认值是无效的,这个问题有些令我不解(我的疑问:WordPress能建成功,为什么会出现默认值无效的情况呢),后来突然想起我在yii主题成形的时候,对运行环境进行过一次升级...如果是MySQL升级导致的问题,那么是什么原因呢,错误报告的是默认值无效,也就是说默认值是被限制的,那么先检查一下结构mysql> DESC wp_comments; +-------------...| NO | | 0000-00-00 00:00:00 | | | comment_date_gmt | datetime...| +-----------+ 1 row in set (0.01 sec) 从上面的查询结果我们可以看到comment_date默认值是0000-00-00 00:00:00,数据类型是datetime...,在时间格式使用这种默认值是很常见的,在5.7下难道不兼容??

97040

mysql timestamp

NULL DEFAULT NULL request3 TIMESTAMP not null `request3` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00...-00-00 00:00:00’ (1)当 request3 TIMESTAMP not null 列在timestamp字段中不是第一个字段时时 (2)当 request3 TIMESTAMP...not null 字段是第一个timestamp 字段是 二、MySQL日期类型DATETIME和TIMESTAMP 相关问题详解 MySQL的日期类型有三种:DATETIME、DATE和TIMESTAMP...  默认值可以为“0000-00-00 00:00:00”(前提是mysql的sql_model是非严格模式),但默认不能为null(如果想为null,则需要:[字段名] timestamp NULL...(其实是可以的 8.0亲测,5.7也可以) 3DATETIME列可以变相的设定默认值,比如通过触发器、或者在插入数据时候,将DATETIME字段值设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到

1.6K20

浅谈MySQL的sql_mode

默认的SQL mode ONLY_FULL_GROUP_BY 设置了这个值,如果使用GROUP BY,在SELECT后面出现的字段,在GROUP BY后面必须出现,不然报错如下 Expression #3...如果要插入的行不包含定义中没有显式DEFAULT子句的非null列的值,则该值缺失。...比如我们的某个字段设置不能为NULL,而我们插入的数据这个字段NULL,那么就不能通过,就会报错如下: 1364 - Field 'dealer' doesn't have a default value...如果没有配置NO_ENGINE_SUBSTITUTION,那么就会将我们指定的存储引擎(不支持或者不存在)的存储引擎替换为默认的存储引擎,MySQL5.7后的默认存储引擎为InnoDB,所以就会自动设置为...=utf8mb4_0900_ai_ci MySQL存储引擎 SHOW ENGINES; 关于MySQL的SQL mode,就说到这里,我只列举了MySQL5.7默认的几种并对其进行讲解,有兴趣的话可以去了解其他的选项

1K30

技术分享 | MySQL 的 TIMESTAMP 类型字段非空和默认值属性的影响

字段,这些的同步任务就都失败了,而另外的一些包含了 DATETIME 数据类型的就同步成功了,不知道这是不是 MySQL 版本差异导致的?...MySQL 是否为 TIMESTAMP 列的默认值和 NULL 值的处理启用某些非标准的行为: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html...(3) 在第一个列之后的 TIMESTAMP 列,如果没有明确地用 NULL 属性或明确的 DEFAULT 属性来声明,就会自动声明为 DEFAULT '0000-00-00 00:00:00' 。...,他的结构会改成: 按照上述规则(3),在第一个列之后的 TIMESTAMP 列,即此处的 updatetime ,如果没有明确地用 NULL 属性或明确的 DEFAULT 属性来声明,就会自动声明为...DEFAULT '0000-00-00 00:00:00',但是这个 MySQL 5.7.20 的 sql_mode 变量包含了 NO_ZERO_DATE 规则,因此默认值'0000-00-00 00

5K20

小白学习MySQL - TIMESTAMP类型字段非空和默认值属性的影响

的库时,如果中含有TIMESTAMP数据类型、缺省值为current_timestamp的字段,这些的同步任务就都失败了,而另外的一些包含了DATETIME数据类型的就同步成功了,不知道这是不是MySQL...MySQL是否为TIMESTAMP列的默认值和NULL值的处理启用某些非标准的行为, https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html...(3) 在第一个列之后的TIMESTAMP列,如果没有明确地用NULL属性或明确的DEFAULT属性来声明,就会自动声明为DEFAULT '0000-00-00 00:00:00'。...和ON UPDATE CURRENT_TIMESTAMP属性声明,假设这个建表语句中只有一个TIMESTAMP类型字段createtime,他的结构会改成, 按照上述规则(3),在第一个列之后的TIMESTAMP...列,即此处的updatetime,如果没有明确地用NULL属性或明确的DEFAULT属性来声明,就会自动声明为DEFAULT '0000-00-00 00:00:00',但是这个MySQL 5.7.20

4.6K40

MySQL sql_mode的坑及严格模式详解

踩了 MySQL8 的一个关于 sql_mode 的坑,这是 MySQL5.7默认的: Expression #1 of SELECT list is not in GROUP BY clause...mysql5.7默认启用这个模式,这个模式是指在mysql的select查询不能出现group by语句字段之外的其余字段。...例,下面的sql在mysql5.7之后的版本,会报错,在mysql5.7之前的版本能正常查询: SELECT id,name,status FROM user GROUP BY status ALLOW_INVALID_DATES...例如,如果你dump这个并且重新reload它,mysql可能会生成的值当导入数值为0的值时,这样就会导致数据的不一致,启用这个模式在导入dumo出的文件之前可以解决这个不一致的问题。...如果这个模式禁用,则’0000-00-00’被允许并且插入没有警告,如果这个模式启用,则’0000-00-00’被运行并且插入产生一个警告信息;如果这个模式和严格模式被启用,则’0000-00-00’不被允许并且插入产生错误

2K20

explicit_defaults_for_timestamp参数详解

字段,若没有指定,则设置了 NOT NULL DEFAULT '0000-00-00 00:00:00'属性。...--------------------+| NULL | NULL | 0000-00-00 00:00:00 |+------+------+---------------------+ 从结构上看出...,在参数开启的情况下MySQL默认会为timestamp列添加 null default null属性,而且MySQL也没有为第一个timestamp字段设置该列为current timestamp值。...当timestamp 字段指定NOT NULL时,若显式插入NULL则报错提示:该字段不能为空;若不显式插入该字段且SQL_MODE不包含'NO_ZERO_DATE',则会向该列中插入'0000-00-...笔者了解到亚马逊RDS MySQL5.7实例该参数默认为ON,在环境迁移时要特别注意下该参数。 参考: http://suo.im/5bDU2o http://suo.im/4AJeM9

4.5K50

【数据库】MySql的sql_mode模式说明

什么是严格模式mysql5.7+的版本中,sql_mode为严格模式。比如必须给字段默认值,更新数据的长度必须符合限制等。...不同版本的Mysql的sql_mode默认Mysql 5.6 :Default Value 为 NO_ENGINE_SUBSTITUTIONMysql 5.7 :Default Value 为 ONLY_FULL_GROUP_BY...如果未给出该模式,那么数据被清零时,MySQL返回NULL。...如果这个模式禁用,则’0000-00-00’被允许并且插入没有警告,如果这个模式启用,则’0000-00-00’被运行并且插入产生一个警告信息;如果这个模式和严格模式被启用,则’0000-00-00’不被允许并且插入产生错误...mysql5.7默认启用这个模式,这个模式是指在mysql的select查询不能出现除group by语句字段之外的其余字段

1.5K50

golang中使用gorm写入time.Time的类型时间问题

空时间类型写入数据库,无法匹配mysql中的datetime类型的时间格式Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column.../test/gorm_time/controller/tag.go:32 Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column...-00-00 00:00:00')Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'online_at' at...解决办法方法一:定义model的时候,添加字段标签default:null在定义Tag model的时候,由于没有定义default:null,因此gorm在处理SQL的时候,就会自动使用零值来代替。...附录示例代码代码结构main.go : 入口主函数controllertag.go : Tag控制器,提供给main.go调用modeltag.go : Tag模型,定义数据结构 model/tag.gopackage

1.8K20

Mysql千万级数据量批量快速迁移

导入 同样需要先登陆到mysql服务,load data导入执行一条sql,需要先创建一张和原来结构字段数相同的,注意几点,比如字段类型可以由原来的int>varchar,但是返过来就不行,字段名和表明可以和原来不一样都可以...,但是字段数量要大于等于原来的字段数量,比如原如下,则需要创建字段不能少于3个 ID NAME AGE 1 Siri 18 load data infile '/root/data.txt' into.../char,插入空时,load data 默认导入 空字符串 – 数据库字段如果是decimal,插入空时,load data 默认导入 0.00000000 – 数据库字段如果是datetime,...插入空时,load data 默认导入 0000-00-00 00:00:00 – 数据库字段如果是datetime,插入yyyy-MM-dd时,load data 默认导入 yyyy-MM-dd 00...:00:00,数据正确性能够保证 – 数据库字段如果是datetime,插入HH:mm:ss时(HH后面应是英文冒号),load data 默认导入 0000-00-00 00:00:00,数据正确性不能够保证

2.8K10

MySQL 8.0中DATE,DATETIME和 TIMESTAMP类型和5.7之间的差异

本文介绍MySQL 8.0和MySQL 5.7之间的差异;本文MySQL实验环境为8.0.23; MySQL允许对DATETIME和 TIMESTAMP值使用小数秒 , 精度最高为微秒(6位数) CREATE...默认情况下,第一TIMESTAMP 列具有这些属性,如前所述。但是,TIMESTAMP可以将中的任何列定义为具有这些属性。 小数部分应始终与其余时间间隔一个小数点;无法识别其他小数秒分隔符。...从MySQL 8.0.19开始,可以在向中插入TIMESTAMP和 DATETIME值时指定时区偏移量。...如果SQL模式允许此转换,则将无效的日期、日期时间或时间戳值转换为相应类型的“零”值(’0000-00-00’或’0000-00-00 00:00:00’)。...* MySQL不接受TIMESTAMP值在day或month列中包含零的值或不是有效日期的值。唯一的例外是特殊的“零”值 ‘0000-00-00 00:00:00’,如果SQL模式允许该值。

6.3K51

MySQL的sql_mode模式说明及设置

(3) 在不同数据库之间进行数据迁移之前,通过设置SQL Mode 可以使MySQL 上的数据方便地迁移到目标数据库中。...和MySQL5.7默认的sql_mode模式参数是不一样的,5.6的mode是NO_ENGINE_SUBSTITUTION,其实表示的是一个空值,相当于没有什么模式设置,可以理解为宽松模式。...,出现这种错误,应该报错才对,所以MySQL5.7版本就将sql_mode默认改为了严格模式,并且我们即便是用的MySQL5.6,也应该自行将其改为严格模式,而你记着,MySQL等等的这些数据库,都是想把关于数据的所有操作都自己包揽下来...例如表中含字段TIMESTAMP列(如果未声明为NULL或显示DEFAULT子句)将自动分配DEFAULT '0000-00-00 00:00:00'(零时间戳),也或者是本测试的day列默认允许插入零日期...'0000-00-00' COMMENT '日期';这些显然是不满足sql_mode中的NO_ZERO_DATE而报错。

1.9K30

校验数据库时间字段合规性

技术社群的这篇文章《技术分享 | 如何校验 MySQL&Oracle 时间字段合规性》,介绍了对MySQL和Oracle数据库插入时间规范校验方面的问题,这种操作很少见,但校验的场景,还是很常见的。...3MySQL 校验方法 3.1 创建测试表模拟低版本不规范数据 -- 创建测试表 SQL> CREATE TABLE T_ORDER(     ID BIGINT AUTO_INCREMENT PRIMARY... DATETIME);    -- 设置SQL_MODE为5.7或8.0高版本默认值 SQL> SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,...:00:00 | 0000-00-00 00:00:00 | |  3 | 9999-00-04 00:00:00 | 0000-00-00 00:00:00 | |  4 | 0000-03-00 00...:00:00 | 0000-00-00 00:00:00 | +----+---------------------+---------------------+ 4取巧的小方法 对时间字段用正则表达式匹配

20040
领券