Navicat运行SQL文件报错

文章目录

  • 报错 1031
    • 解决方法
  • 报错 1265
    • 原因
    • 解决方法
  • 报错 2013
    • 原因
    • 解决办法
    • 参考

说明:
MySQL 5.7.26
Navicat 12.1.20

报错 1031

Navicat运行SQL文件,报错1031

[ERR] 1031 - Table storage engine for '表名' doesn't have this option
[ERR] CREATE TABLE eload_order_to_erp_records (
  id int(11) NOT NULL AUTO_INCREMENT,
  order_id int(11) DEFAULT '0',
  addtime int(11) DEFAULT '0',
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11429 DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED

解决方法

删除ROW_FORMAT=FIXED
在Linux系统中,可以使用sed进行文本替换。

[root@sy-pc ~]$ cat old.sql | sed 's/ROW_FORMAT=FIXED//g' > new.sql

报错 1265

[SQL] Query SQL文件名称 start
[ERR] 1265 - Data truncated for column 'from' at row 1
[ERR] INSERT INTO `feedback` VALUES ('14', '1', '[email protected]', 'God\n\nDf\nLloyd\nKl\nLloyd\nLloyd\n\nLoll\nLoll\nLoJack\nJunk\nKim\n]jkj\nJkj\nJkj\nKill\nLike\nKhalil\nLoll\n\\lll\nI\'ll', '', '1465951204')
[SQL] Finished unsuccessfully

查看表结构

DROP TABLE IF EXISTS `feedback`;
CREATE TABLE feedback (
  f_id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `type` tinyint(1) DEFAULT NULL COMMENT '类型',
  email varchar(50) DEFAULT NULL COMMENT '邮箱',
  content text COMMENT '内容',
  `from` enum('android','ios') DEFAULT NULL COMMENT '来源',
  created_time int(10) DEFAULT NULL COMMENT '添加时间',
  PRIMARY KEY (f_id)
) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8 COMMENT='APP反馈';

原因

原表中 from 字段的类型是枚举,且只有 android ios 两个选项,SQL文件中写入的数据是空字符串 '',类型不匹配造成的错误。

解决方法

因为对该表的Insert语句太多了,所以我对创建表的语句进行了修改,将

  `from` enum('android','ios') DEFAULT NULL COMMENT '来源', 

替换为

  `from` enum('android','ios','') DEFAULT NULL COMMENT '来源',

在Linux系统中,使用sed命令。
测试

$ cat old.sql | sed  "s/\`from\` enum('android','ios') DEFAULT NULL COMMENT '来源'/\`from\` enum('android','ios','') DEFAULT NULL COMMENT '来源'/" | grep "DEFAULT NULL COMMENT '来源'"
  `from` enum('android','ios','') DEFAULT NULL COMMENT '来源',

执行

$ cat old.sql | sed  "s/\`from\` enum('android','ios') DEFAULT NULL COMMENT '来源'/\`from\` enum('android','ios','') DEFAULT NULL COMMENT '来源'/" > new.sql

报错 2013

[SQL] Query yzc_test_2 start
[ERR] 2013 - Lost connection to MySQL server during query

原因

解决办法

变量net_read_timeout和net_write_timeout,它们分别设置为30秒和60秒。 可以在my.cnf配置文件中根据需要设置它们来更改它们。对my.cnf进行这些更改后,必须重新启动MySQL!!!

net_read_timeout = 120
net_write_timeout = 900

若更改my.cnf后,不想重启,则执行以下SQL

set global net_read_timeout = 120;
set global net_write_timeout = 900;

参考

[1] Mysql Row_Format 参数讲解 [DB|OL] https://www.cnblogs.com/bing-yu12/p/7735652.html
[2] awk&sed入门(可编程过滤器awk与流编辑器sed) [DB|OL] https://blog.csdn.net/zhou16333/article/details/84234978#_226
[3] [DB|OL] https://blog.csdn.net/weixin_39561473/article/details/90213914

你可能感兴趣的:(MySQL)