`

mysql 5.7中严格模式的问题

 
阅读更多
在mysql 5.7中,默认使用的是严格模式,这个有的时候会太严格,带来问题,

比如:
mysql> CREATE TABLE `events_t` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `event_date` datetime NOT NULL,
-> `profile_id` int(11) DEFAULT NULL,
-> PRIMARY KEY (`id`),
-> KEY `event_date` (`event_date`),
-> KEY `profile_id` (`profile_id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1
-> ;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into events_t (profile_id) values (1);
ERROR 1364 (HY000): Field 'event_date' doesn't have a default value

这里日期就必须要有默认值,不能 NULL,但:
mysql> alter table events_t change event_date event_date datetime NOT NULL default '0000-00-00 00:00:00';
ERROR 1067 (42000): Invalid default value for 'event_date'
mysql> alter table events_t change event_date event_date datetime NOT NULL default '2000-00-00 00:00:00';
ERROR 1067 (42000): Invalid default value for 'event_date'

也是不行的,必须要有真实日期默认
mysql> alter table events_t change event_date event_date datetime NOT NULL default '2000-01-01 00:00:00';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into events_t (profile_id) values (1);
Query OK, 1 row affected (0.00 sec)

因此只有日期格式改为timestamp,或者用NULL,或者在insert的时候用now()产生日期,
如果不用默认模式,可以这样:
mysql> set global SQL_MODE="NO_ENGINE_SUBSTITUTION";
0
1
分享到:
评论

相关推荐

    mysql5.7.37版本安装包

    5. **安全增强**:MySQL 5.7 引入了增强的安全特性,如默认的加密连接、更好的权限管理系统以及更严格的审计日志,增强了数据保护和合规性。 6. **组复制**:MySQL 5.7 引入了组复制功能,这是一种高可用性和灾难...

    MySQL 5.7(GA)版本新特性

    在SQLMode方面,MySQL 5.7 GA版本默认启用了STRICT_TRANS_TABLES模式,这意味着对数据类型转换和数据范围不符合的严格处理,提高了数据的一致性和准确性。 MySQL 5.7在初始化安装方面也有所不同。从5.7.6版本开始,...

    mysql-5.7版本源码包

    7. **安全增强**:MySQL 5.7提升了安全性,如强化了默认密码策略、增加了认证插件的灵活性,以及引入了更严格的SQL模式,以防止注入攻击。 8. **分区表改进**:5.7版本增强了分区表功能,包括对RANGE和LIST分区的...

    MySQL5.7下载 64位 mysql-5.7.20-winx64 免安装

    5. **安全增强**:增强了默认的安全设置,例如,严格模式默认开启,降低了SQL注入等安全风险。 6. **组复制**:MySQL5.7引入了Group Replication,这是一种高可用性和灾难恢复的解决方案,可以在多个节点之间实现...

    MySQL 5.7 参考手册(英文版).pdf

    5. **复制与高可用性**:MySQL 5.7的复制功能有了显著的改进,支持GTID(全局事务标识符)复制,提供了一种更可靠和易于管理的主从复制模式,提高了系统的高可用性和灾难恢复能力。 6. **NDB Cluster**:NDB ...

    mysql5.7_el7.zip

    MySQL 5.7增强了默认的安全配置,包括更严格的权限系统和加密连接。新增的caching_sha2_password认证插件提供了更强的密码加密,提高了安全性。 6. 查询优化器改进: 优化器现在可以更好地估计查询计划的成本,...

    MySQL 5.7 Reference.pdf

    这意味着某些功能可能未在您所拥有的 MySQL 5.7 版本中提供。若想了解您的版本包含了哪些特性,应参考您的 MySQL 5.7 许可协议或联系 Oracle 销售代表。对于每个版本的更新变更,可以查阅 MySQL 5.7 发行说明。 在 ...

    [全]MySQL5.7升级到8.0过程详解.docx

    3. **SQL模式**:在MySQL 8.0中,`sql_mode`有了更严格的默认设置,如`NO_AUTO_CREATE_USER`,这限制了自动创建用户的能力,增强了安全性。 4. **JSON支持**:MySQL 8.0引入了对JSON数据类型的原生支持,使得处理非...

    mysql-5.7.33-winx64-2021-7-15.zip

    这个压缩包文件"mysql-5.7.33-winx64-2021-7-15.zip"包含了MySQL 5.7.33的Windows 64位版本,这是一个稳定且功能丰富的版本,适合在高性能的服务器环境中部署。 **MySQL 5.7.33 特性详解** 1. **InnoDB存储引擎...

    mysql5.7版本,其他5.7版本也可以

    - **GROUP BY优化**:放宽了对GROUP BY子句的严格模式,允许未在GROUP BY中出现的列出现在聚合函数之外。 - **分区表优化**:改进了分区表的性能,特别是在删除和更新操作上。 通过上述介绍,我们可以看出MySQL ...

    MySQL5.7_jb51.rar

    6. **安全增强**:5.7版强化了安全特性,包括更强的密码策略、默认的严格模式,以及更好的审计日志功能,增强了系统的安全性。 7. **分区功能**:在MySQL 5.7中,分区功能得到扩展,支持更多的分区类型,如线性哈希...

    mysql-5.7.29-winx64.zip

    在安全方面,MySQL 5.7.29加强了默认的安全设置,如启用严格的模式,限制不安全的系统变量和函数。此外,新的安全改进还包括增强的审计日志功能,帮助管理员追踪和分析数据库操作。 在管理方面,MySQL提供了一个名...

    MYSQL5.7数据库安装包

    - **GROUP BY优化**:放宽了GROUP BY语句的严格模式,使得在某些情况下可以不严格遵循SQL标准。 - **性能提升**:提升了查询执行速度,特别是对于大型数据集和复杂查询。 3. **安装过程**: - `安装步骤.jpg`...

    银河麒麟桌面版mysql5.7版本离线安装包(ARM架构)

    在实际安装过程中,使用提供的安装脚本“sudo dpkg -i *”可以自动处理依赖关系,解压并安装MySQL 5.7的所有必要组件。然而,由于是离线安装,用户需要确保在安装前已下载所有必需的依赖包,并且系统满足MySQL 5.7的...

    mysql-installer-community-5.7.18.1.msi

    6. **安全特性**:MySQL 5.7加强了安全性,包括默认启用的强制性的SQL模式、改进的审计日志、更严格的默认权限设置等,这些都提高了系统的安全性。 7. **安装与配置**:`mysql-installer-community-5.7.18.1.msi` ...

    MySQL5.7中的sql_mode默认值带来的坑及解决方法

    在MySQL5.7之前,这个模式默认是关闭的,允许在`GROUP BY`语句中使用非聚合列,即使这些列没有包含在`GROUP BY`子句中。然而,从5.7开始,`ONLY_FULL_GROUP_BY`被加入到默认`sql_mode`中,遵循SQL标准,确保查询结果...

    MySQLMySQL5.7新功能演示 数据库设计专为下一代Web、移动与云应用

    安全控制方面,MySQL 5.7引入了更为严格的权限管理机制,以确保数据的安全性。新版本在用户授权、审计和数据加密方面进行了改进,使得数据库的安全性更加可靠。 MySQL 5.7还提供了针对云端和移动应用设计的特性。...

    mysql5.7.29.rar

    5. **GROUP BY 优化**:放宽了对 GROUP BY 语句的严格模式,使得在某些情况下可以返回非聚合列,即使这些列没有在 GROUP BY 子句中列出。 6. **窗口函数**:MySQL 5.7 添加了窗口函数,类似于 SQL 标准,允许在分组...

    MySQL+5.7+FAQ学习必备资料

    安装MySQL 5.7时,默认的服务器SQL模式可能包括特定的设置,如严格模式等。 存储过程和函数相关: MySQL 5.7支持存储过程和函数的使用,为复杂数据操作和业务逻辑提供了编程能力。 存储过程和函数的文档、论坛资源...

    mysql-installer-community-5.7.17.0.msi

    7. **SQL模式变更**:MySQL 5.7 支持在线SQL模式变更,这意味着可以在不中断服务的情况下修改数据库的模式。 安装MySQL 5.7.17.0.msi文件的过程相对简单,用户只需运行安装程序,按照向导指示选择所需的组件(如...

Global site tag (gtag.js) - Google Analytics