Navicat运行SQL文件报错


说明:
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', '123456789@yahoo.com', '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

当在Navicat中导入SQL文件时出现报错[Err] 1046 - No database selected,可能是由于以下原因导致的: 1. 未选择数据库:在导入SQL文件之前,确保已经选择了要导入到的数据库。可以在Navicat的连接窗口中选择数据库,或者在导入SQL文件时指定数据库。 2. MySQL配置问题:有时候,MySQL的配置可能会导致导入SQL文件时出现报错。可以尝试修改MySQL的配置文件my.ini,增加max_allowed_packet参数的值,以及增加wait_timeout和interactive_timeout参数的值。 以下是解决这个问题的两种方法: 方法一:选择数据库 在导入SQL文件之前,确保已经选择了要导入到的数据库。可以按照以下步骤进行操作: 1. 打开Navicat并连接到MySQL数据库。 2. 在连接窗口中选择要导入到的数据库。 3. 在导航栏中选择“工具”>“SQL文件执行器”。 4. 在SQL文件执行器窗口中,选择要导入的SQL文件。 5. 点击“运行”按钮执行SQL文件。 方法二:修改MySQL配置文件 如果选择数据库仍然无法解决问题,可以尝试修改MySQL的配置文件my.ini。按照以下步骤进行操作: 1. 找到MySQL安装目录下的my.ini配置文件。 2. 使用文本编辑器打开my.ini文件。 3. 在文件中查找max_allowed_packet参数,并增加其值。例如,将max_allowed_packet=8M修改为max_allowed_packet=16M。 4. 在文件中增加wait_timeout和interactive_timeout两项参数,并设置其值。例如,可以添加以下两行: wait_timeout=28800 interactive_timeout=28800 这将增加等待超时时间为8小时。 5. 保存并关闭my.ini文件。 6. 重启MySQL服务。 请注意,修改MySQL配置文件可能需要管理员权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值