mysql - <TABLE> 的表存储引擎在按查询排序时没有此选项(错误 1031)

标签 mysql sql

Table storage engine for <TABLE> doesn't have this option.

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

查询:

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

返回错误:

ERROR 1031 (HY000): Table storage engine for 'dbo.table_1' doesn't have this option.

为什么会这样?我该如何解决?

最佳答案

当您导入使用 MyISAM 创建但后来切换到 InnoDB 的表定义时,似乎会出现此问题;结果 ROW_FORMAT 选项似乎无效。

如果您尝试导入导出的数据库并遇到此问题,您可以简单地搜索并将 ROW_FORMAT=FIXED 替换为空。

我使用以下方法非常快速地做到了这一点:

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

问题解决了!感谢 jbrahy 指出问题出在 ROW_FORMAT。

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

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

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

关于mysql - <TABLE> 的表存储引擎在按查询排序时没有此选项(错误 1031),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486583/

相关文章:

mysql - Openfire - MySQL 存储引擎 : InnoDB or MyISAM?

C# 项目更新从两个表中选择的行的 MySQL 列表

php - 当我点击删除时会显示此错误?

mysql - 如何通过 MYSQL 搜索某些内容然后更改表列中的某些文本

mysql - mySQL 中使用 REPLACE 函数索引列

sql - Postgres 将 LATIN1 编码的文件复制到 UTF 编码的表中

apache 网络服务器中的 MySql

mysql - 无法从远程主机访问 MySQL

android - 从 mysql 检索数据时应用程序崩溃

mysql - 在 mysql 表中搜索 email(unique) 列