千家信息网

升级到MySQL5.7版本需注意的问题有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关升级到MySQL5.7版本需注意的问题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。升级到MySQL5.7 版本需注意的问题1)在
千家信息网最后更新 2026年11月01日升级到MySQL5.7版本需注意的问题有哪些

这篇文章将为大家详细讲解有关升级到MySQL5.7版本需注意的问题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

升级到MySQL5.7 版本需注意的问题

1)在一个无符号列中插入一个负值
创建具有无符号列的表:CREATE TABLE test (id int unsigned);
插入负值。
以前版本:INSERT INTO test VALUES (-1);
Query OK, 1 row affected, 1 warning (0.01 sec)

MySQL 5.7版本:
INSERT INTO test VALUES (-1);
ERROR 1264 (22003): Out of range value for column 'a' at row 1

2)除以零
创建测试表:CREATE TABLE test2 ( id int unsigned );

尝试除以零。
先前版本:INSERT INTO test2 VALUES (0/0);
Query OK, 1 row affected (0.01 sec)

MySQL 5.7版本:INSERT INTO test2 VALUES (0/0);
ERROR 1365 (22012): Division by 0

3)在10个字符的列中插入20个字符的字符串
创建一个包含10个字符的列的表:CREATE TABLE test3 ( a varchar(10) );

尝试插入较长的字符串。
先前版本:INSERT INTO test3 VALUES ('abcdefghijklmnopqrstuvwxyz');
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL 5.7版本:INSERT INTO test3 VALUES ('abcdefghijklmnopqrstuvwxyz');
ERROR 1406 (22001): Data too long for column 'a' at row 1

4)将非标准零日期插入日期时间列
创建具有datetime列的表:CREATE TABLE test3 ( a datetime );

插入0000-00-00 00:00:00 。
先前版本:INSERT INTO test3 VALUES ('0000-00-00 00:00:00');
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL 5.7版本:INSERT INTO test3 VALUES ('0000-00-00 00:00:00');
ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'a' at row 1

5)使用GROUP BY并选择一个不明确的列
发生这种情况时的说明不是一部分GROUP BY ,并且没有聚集函数(例如MIN或MAX )施加到其上。
先前版本:SELECT id, invoice_id, description FROM invoice_line_items GROUP BY invoice_id;
+----+------------+-------------+
| id | invoice_id | description |
+----+------------+-------------+
| 1 | 1 | New socks |
| 3 | 2 | Shoes |
| 5 | 3 | Tie |
+----+------------+-------------+
3 rows in set (0.00 sec)

MySQL 5.7版本:SELECT id, invoice_id, description FROM invoice_line_items GROUP BY invoice_id;
ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'invoice_line_items.description' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


5
)mysql5.7版本SQL_MODE
默认情况下,MySQL 5.7包含以下模式:
* ONLY_FULL_GROUP_BY
* STRICT_TRANS_TABLES
* NO_ENGINE_SUBSTITUTION
* NO_AUTO_CREATE_USER

该模式STRICT_TRANS_TABLES也变得更加严格,在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()产生日期。

6)mysql-connector-java.Jar

Table 2.1 Summary of Connector/J Versions

Connector/J version

Driver Type

JDBC version

MySQL Server version

Status

5.1

4

3.0, 4.0, 4.1, 4.2

4.1, 5.0, 5.1, 5.5, 5.6, 5.7

Recommended version

5.0

4

3.0

4.1, 5.0

Released version

3.1

4

3.0

4.1, 5.0

Obsolete

3.0

4

3.0

3.x, 4.1

Obsolete

Table 26.2 MySQL Connector Versions and MySQL Server Versions

Connector

Connector version

MySQL Server version

Connector/C

6.1.0 GA

5.6, 5.5, 5.1, 5.0, 4.1

Connector/C++

1.0.5 GA

5.6, 5.5, 5.1

Connector/J

5.1.8

5.6, 5.5, 5.1, 5.0, 4.1

Connector/Net

6.5

5.6, 5.5, 5.1, 5.0

Connector/Net

6.4

5.6, 5.5, 5.1, 5.0

Connector/Net

6.3

5.6, 5.5, 5.1, 5.0

Connector/Net

6.2 (No longer supported)

5.6, 5.5, 5.1, 5.0

Connector/Net

6.1 (No longer supported)

5.6, 5.5, 5.1, 5.0

Connector/Net

6.0 (No longer supported)

5.6, 5.5, 5.1, 5.0

Connector/Net

5.2 (No longer supported)

5.6, 5.5, 5.1, 5.0

Connector/Net

1.0 (No longer supported)

5.0, 4.0

Connector/ODBC

5.1

5.6, 5.5, 5.1, 5.0, 4.1.1+

Connector/ODBC

3.51 (Unicode not supported)

5.6, 5.5, 5.1, 5.0, 4.1

Connector/Python

2.0

5.7, 5.6, 5.5

Connector/Python

1.2

5.7, 5.6, 5.5

关于"升级到MySQL5.7版本需注意的问题有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

版本 日期 字符 问题 升级 模式 篇文章 字符串 情况 更多 符号 负值 尝试 不行 不错 实用 内容 函数 只有 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技类互联网 互联网科技小贷 盛创互联网科技有限公司 互联网巨头投资的硬核科技 互联网公司会议桌创意科技软装饰 成都铂石互联网科技做什么的 互联网科技与大数据专业 注册互联网科技公司经营范围大全 未来五年的互联网科技 乌鲁木齐新华智原互联网科技学校 互联网在线教育科技创业 互联网科技大赛获奖感言 群盈汇互联网科技有限公司 中科明德北京互联网科技 工业互联网展湾科技股份有限公司 每天都有哪些好的互联网科技 互联网科技实习生岗位 云南省自由互联网科技有限公司 张召忠谈中国互联网科技 科技互联网行业投资研究 互联网黑科技 互联网科技金融 互联网 科技创新 互联网科技排名 贷财互联网科技 天津腾达互联网科技有限公司 无锡工业互联网科技有限公司 西安有哪些互联网高科技企业 数字互联网科技有限公司 银川新华互联网科技学校招聘
0