一、SQL mode变化
5.7版本采用严格的SQL mode,默认使用STRICT_TRANS_TABLES。
STRICT_TRANS_TABLES 意思是说,如果要存储的字段的长度大于字段定义的大小,则直接报错,而非像5.6版本以及之前,截断数据进行存储,同时抛出一个warning。注意同一个会话调整 sql_mode 必须退出之后在进入sql_mode才会生效。详细了解SQL_MODE 请移步《sql_mode官方文档》。 注意5.7 对于null,'00000000 00:00:00' 这类default值的影响.
ONLY_FULL_GROUP_BY的提升使其更加复杂,不再拒绝以前被拒绝的确定性查询(deterministic queries)。所以,这个模式默认是启用的,仅阻止包含那些在组内不能确保唯一性的非确定性查询。
ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and NO_ZERO_IN_DATE,这些模式已经被弃用,但还是默认开启的。官方的长期计划是把它们包括在严格的SQL模式里(strict SQL mode),而且将会在未来的版本中删除
现在5.7版本默认启用的模式有:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION
二、Online ALTER TABLE
“ALTER TABLE”命令中可以使用“RENAME INDEX”子句来修改索引名称。更改是在没有表复制操作的情况下进行的。而且在所有存储引擎下都生效。
mysql> alter table xx rename index idx_name1 to idx_name2; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
三、新增full-text插件
Mysql提供一个内置的全文搜索插件( full-text ngram parser plugin)。其中ngram插件支持中文、日文、韩文。还有一个可安装的MeCab全文搜索插件,支持日文。