Mysql 的表存储引擎在按查询排序时没有此选项(错误 1031)

表存储引擎<表>没有这个选项.

这是MySQL在order by查询中返回的错误.列类型为varchar(2000).

查询:

select * from `dbo.table_1` order by textT;

返回错误:

错误1031(HY000):"dbo"的表存储引擎.表_1'没有此选项.

为什么会这样?我该怎么修呢?

推荐答案

当您导入一个用MyISAM创建的表定义,但后来被切换到InnoDB时,就会出现这个问题;由此产生的ROW_FORMAT个选项似乎无效.

如果您试图导入导出的数据库时遇到此问题,只需搜索并用零替换ROW_FORMAT=FIXED即可.

我很快就做到了:

sed -ie 's/ROW_FORMAT=FIXED//g' backup.sql

问题解决了!感谢jbrahy指出问题出在ROW_格式上.

编辑:根据@seven的建议更新以适用于更多平台

EDIT2:另请注意,根据@Steen Schütt的说法,这可能是一个更安全的修复方法

sed -ie 's/ROW_FORMAT=FIXED/ROW_FORMAT=COMPACT/g' backup.sql

Mysql相关问答推荐

更新MySQL表中子记录的序号

根据计数按月和年对数据进行分组()

用于搜索从各种表中获得的结果的查询

在停靠容器中备份和恢复MySQL数据库时出现Unicode字符问题

从MySQL JSON列中检索数组中的所有答案

外部磁盘上的MySQL表空间和数据文件

将时间戳四舍五入到最接近的半小时而不遗漏丢失的数据

如何同时从同一个表中 Select 从 SQL 表中删除行

如何在 mysql 的 group by 子句中 Select 最后创建的记录?

使用适配器设计模式和外观设计模式实现

有人可以帮我优化这个查询吗?

按年份范围 SQL 查询分组

了解 Spring 和数据库级别的事务?

MySQL如何通过外键ID Select 多行?

如何将表的链接列转换为 SQL 中的行?

MySql - 默认情况下主键是唯一的吗?

授予用户对 MySQL 中有限数量表的访问权限

MySQL - 表'my_table'没有被锁定表锁定

如何改进 INSERT INTO ... SELECT 锁定行为

如何将 MySQL 查询结果存储在另一个表中?