Mysql DDL表结构的SQL语句用双引号不是反单引号

概述

最近通过navicat软件查看对象信息,看到表结构中,表名、字段名都是用双引号"包含的,这样的话,就到只了所有的DDL语句,都没法直接拷贝运行的。然后自己在服务器上执行了:show create table tablename,发现结果集仍然是双引号包含。

解决过程

开始的时候,以为是navicat软件的问题,但是发现该软件练级额的其他的数据库都不会出现这个双引号的问题,所以,最终定位到应该是数据库配置的问题my.cnf

记得当时遇到过数据库insert语句,插入datetime格式的字段值:0000-00-00 00:00:00时,报错,所以更改了my.cnfsql_mode配置。

sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

通过翻阅网上资料看到这样一句:

ANSI QUOTES A double quote (") is now treated as an identifier quote (`). Strings can only be quoted with a single quote (’)
反引号、双引号用来引用表名,字段名称,单引号用来引用字符串。
IGNORE_SPACEThis sql_mode allows a space between a built-in function and the open parenthesis
在内建函数中忽略多余的空白
STRICT_ALL_TABLESWhen this sql_mode

所以,将sql_mode中的最后一句:ANSI_QUOTES去掉,重启mysql服务即可