MySQL5.6数据导入MySQL5.7报错:ERROR 1031 (HY000)
一、故障现象
今天将一个在MySQL5.7上的数据导入到MySQL5.6里面去,默认存储引擎都是InnoDB,导入报错如下:
[root@oratest52 data]# mysql -uroot -p123456 < /data/127.sql
ERROR 1031 (HY000) at line 598885: Table storage engine for 't_config_dbconnects' doesn't have this option
报错提示598885行有问题,t_config_dbconnects表的存储引擎不支持这个选项。由于备份文件较大(50G),不可能用vi打开去看,用sed文件查看该表的建表sql如下:
[root@oratest52 data]# sed -n '598870,598899p' 127.sql
--
-- Current Database: `db_config`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db_config` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `db_config`;
--
-- Table structure for table `t_config_dbconnects`
--
DROP TABLE IF EXISTS `t_config_dbconnects`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_config_dbconnects` (
`ID` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`NAME` char(50) DEFAULT NULL,
`HOST` char(50) NOT NULL DEFAULT '',
`PORT` char(10) NOT NULL DEFAULT '',
`USER` char(50) NOT NULL DEFAULT '',
`PASSWORD` char(50) NOT NULL DEFAULT '',
`CHARSET` char(30) DEFAULT NULL,
`DBNAME` char(50) NOT NULL DEFAULT '',
`ABOUT` char(200) DEFAULT NULL,
`POSTTIME` datetime DEFAULT NULL,
`LASTUSER` char(50) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_NAME` (`NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;
可以看到最后一行中有ROW_FORMAT=FIXED
二、初步分析
发现报错的表的ROW_FORMAT格式是FIXED,并不是我们熟悉的Dynamic。查看资料和官方文档发现不同版本或者不同源的MySQL对于行记录格式的处理方式不一样,解决上述问题就先要了解row_format的改进历程,这里简单介绍下MyISAM和InnoDB两种存储引擎对于row_format格式的处理。
2.1MyISAM存储引擎
MyISAM有3种行存储格式:fixed/dynamic/compressed
- fixed:为默认格式,只有当表不包含变长字段(varchar/varbinary/blob/text)时使用,该每行都是固定的,所以很容易获取行在页上的具体位置,存取效率比较高,但是占用磁盘空间较多
- dynamic:每行都有一个行头部,包含bitmap,用以记录那些列为空(NULL列不算为空)
- compressed只能通过myisampack创建且为只读
2.2InnoDB存储引擎
Innodb plugin新引入Barracuda,其包含compressed/dynamic两种行格式,而之前的compact/redundant统属于antelope;目前可选值为Antelope和Barracuda,低版本默认为Antelope,高版本默认为Barracuda。
了解这两种存储引擎如上两种row_format格式后,就能明白对一张MyISAM表且row_format为fixed格式的表更改存储殷勤为InnoDB肯定是不行的,因为InnoDB的row_format不支持fixed格式。所以可以先备份要更改引擎的表数据,然后将表的row_format更改为存储引擎都能识别的row_format,再进行引擎的变更。
mysql> alter table t_config_dbconnects ROW_FORMAT = default;
Query OK, 0 rows affected (0.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table t_config_dbconnects engine = innodb;
Query OK, 0 rows affected (2.67 sec)
Records: 0 Duplicates: 0 Warnings: 0
MySQL5.6数据导入MySQL5.7报错:ERROR 1031 (HY000)的更多相关文章
- mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
注:本文来源于< mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy r ...
- MySQL5.7 报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement
MySQL5.7 报错 : ERROR 1820 (HY000): You must reset your password using ALTER USER statement before exe ...
- 解决MySQL报错ERROR 2002 (HY000)【转】
今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...
- MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong.
MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong. 1.今天在使用MySQL创建数据库时出现如下报错: mysql> ...
- 第一次登录mysql,使用任何命令都报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
问题: 使用临时密码登录成功后,使用任何myql命令,例如show databases;都提示下面的报错 ERROR 1820 (HY000): You must reset your passwor ...
- mysql-创建用户报错ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX'(转载)
创建用户: create user ‘test’@’%’ identified by ‘test’; 显示ERROR 1396 (HY000): Operation CREATE USER faile ...
- mysql-创建用户报错ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'
创建用户: create user ‘test’@’%’ identified by ‘test’; 显示ERROR 1396 (HY000): Operation CREATE USER faile ...
- mysql-创建用户报错ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX'
创建用户: create user 'test'@'%' identified by 'test'; 显示ERROR 1396 (HY000): Operation CREATE USER faile ...
- MySQL报错ERROR 1436 (HY000): Thread stack overrun:
今天搭私服的时候,卡在角色创建画面,日志报错如上. 这是MySQL报错ERROR 1436 (HY000): Thread stack overrun: 修改方法 vim /etc/my.cnf ...
随机推荐
- Python3 批量修改JPG图片尺寸
功能 批量修改当前文件夹下的jpg图片到设置的尺寸 将修改后的图片移动到 new_img 这个文件夹下 导入库 from PIL import Image # 处理图片模块 import os imp ...
- TCP/IP||Traceroute
1.概述 由Van jacobson编写的工具,用于探索tcp/ip协议,使用ICMP报文和首部TTL字段,TTL字段由发送端设置一个8bit字段,初始值为RFC指定,当前值为64, 每个处理数据的路 ...
- $Noip2010/Luogu1525$ 关押罪犯 贪心
$Luogu$ $Sol$ 贪心.尽量把怨气值大的罪犯放到两个监狱,所以首先要按照怨气值从大到小排序.当扫描到两个罪犯已经被指定到同一个监狱时,就结束循环,这个怨气值就是答案.当然把怨气值大的两个罪犯 ...
- 机器学习——EM算法与GMM算法
目录 最大似然估计 K-means算法 EM算法 GMM算法(实际是高斯混合聚类) 中心思想:①极大似然估计 ②θ=f(θold) 此算法非常老,几乎不会问到,但思想很重要. EM的原理推导还是蛮复杂 ...
- 「Luogu P4987」回文项链 解题报告
题面 求环中的长度为k(k为奇数)且回文中心不同的回文串个数 思路: 刚学manacher算法,就送上一道模板题,此题注重对manacher算法的理解 Manacher,但是不用插入其他符号,因为k是 ...
- 1041 考试座位号 (15 分)C语言
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考 ...
- C Primer Plus(二)
重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 分支和跳转 1.ctype.h头文件里包含了一些列用于字符判断的函数,包括判断数字.大 ...
- Ant Design框架中不同的组件访问不同的models中的数据
Ant Design框架中不同的组件访问不同的models中的数据 本文记录了我在使用该框架的时候踩过的坑,方便以后查阅. 一.models绑定 在某个组件(控件或是页面),要想从某个models中获 ...
- curl使用post方式访问Spring Cloud gateway报time out错误
公司老的项目使用是php,要进行重构.其他团队使用php curl函数使用post方式调用Spring Cloud gateway 报time out错误. 但是使用postman测试是没有任何问题, ...
- Visual Studio 2019移除/禁用Live Share按钮
Visual Studio 2019新增了几个按钮,搜索按钮,Live Share按钮,发送反馈按钮,管理员按钮(即 “Live Share”, “Send Feedback” ,“ADMIN”) L ...