Navicat for mysql 执行 sql 脚本时的细节
Navicat for mysql 是一个图形化的 mysql 数据库管理界面,方便好用,但是也有 GUI
的通病,那就是用户无法清晰的知道点击按钮之后到底发生了些什么,有时候是十分危险
的。比如执行 sql 脚本时到底发生了什么,这里将数据库打开 general log,用来辅助分
析。
以上是运行 SQL 文件的界面,有 4 个地方需要注意:编码和下面三个选择框。
编码:
经过测试,这里的“编码”指的是文件的编码,而连接到数据库默认使用的是 utf8(这个是
navicat 的设置,无法改变)。假如这里我们选择编码为 latin1,也就是说读取文件内容
时认为其编码是 latin1 的,这个时候就要进行转码了。为了方便,sql 文件尽量都使用
utf8 编码的,这样最安全,不会出现乱码。
三个选择框:
这三个选择框只有 set autocommit=0 比较好理解,表示禁用自动提交,效果就是执行
完全部 sql 语句后再执行一次 commit。这样做可以提高插入数据的效率。比较难以理解
的 就 是 前 两 个 。 假 设 每 个 框 勾 选 为 1 , 不 勾 选 为 0 , 那 么 总 共 有 8 种 组 合 :
000,001,010,011···这里准备一个 sql 文件,文件内容如下:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for t1
-- ----------------------------
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`id2` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
评论2