MySQL运维实战(4.8) SQL_MODE之NO_ENGINE_SUBSTITUTION

俊达2年前技术文章818

开启NO_ENGINE_SUBSTITUTION,建表时如果指定的存储引擎不可用或不存在,SQL报错。否则会使用默认的存储引擎替换。



如果不设置NO_ENGINE_SUBSTITUTION,建表时指定的存储引擎不存在,则MySQL会使用默认的存储引擎替换

mysql> set sql_mode='';
Query OK, 0 rows affected (0.00 sec)

mysql> create table t1(a int) engine=abc;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1286 | Unknown storage engine 'abc'               |
| Warning | 1266 | Using storage engine InnoDB for table 't1' |
+---------+------+--------------------------------------------+
2 rows in set (0.00 sec)



如果设置了NO_ENGINE_SUBSTITUTION,建表时指定的存储引擎不存在,则会报错,无法创建表。

mysql> set sql_mode='NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.01 sec)

mysql> create table t1(a int) engine=abc;
ERROR 1286 (42000): Unknown storage engine 'abc'



建议SQL_MODE设置NO_ENGINE_SUBSTITUTION,可以尽早发现问题。避免表使用了不符合要求的存储引擎。

相关文章

MySQL运维实战之备份和恢复(8.2)xtrabackup备份到云端(OSS)

xtrabackup工具中有一个xbcloud程序,可以将数据库直接备份到S3对象存储中,本地不落盘。这里介绍将数据库直接备份到OSS的一种方法。具体方法如下:1、准备OSS我们使用ossutil工具...

 MySQL运维实战(1.3)安装部署:源码编译安装

MySQL运维实战(1.3)安装部署:源码编译安装

源码编译安装通常不需要自己编译mysql源码,编译的mysql和二进制包的内容基本一致。当然有些时候可能会需要采用源码编译的方式安装,安装一些非标准版本的mysql安装一些社区的patch、bugfi...

MySQL运维实战之备份和恢复(8.9)xtrabackup备份指定表

备份部分表如果实例设置了参数innodb_file_per_table,xtrabackup可以备份部分表。通过--tables,--tables-file,--databases,--databas...

MySQL优化器特性(五)单表访问路径

数据库的访问路径(access path)是指从表中获取数据的方式,一般可以通过扫描表或通过索引获取数据。想熟练掌握SQL优化技能,首先需要熟悉单表访问路径。本文先简单介绍MySQL支持的各种单表访问...

MySQL运维实战之备份和恢复(8.1)xtrabackup全量备份

xtrabackup是percona开源的mysql物理备份工具。xtrabackup 8.0支持mysql 8.0版本的备份和恢复。xtrabackup 2.4支持mysql 5.7及以下版本的备份...

MySQL优化器特性(二)MRR优化

MySQL优化器特性(二)MRR优化

Index Range Scan索引范围扫描的一般步骤:1、根据where条件,从B+树定位到第一条记录。2、从索引页子节点中获取到行号(rowid),根据rowid回表查询数据。3、使用额外的whe...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。