1. ホーム
  2. mysql

[解決済み] <TABLE> のテーブルストレージエンジンには、order by クエリでこのオプションがありません (ERROR 1031)。

2022-02-13 09:18:32

質問

<ブロッククオート

TABLE>用のテーブルストレージエンジンには、このオプションがありません。

これは、MySQL が order by クエリを実行します。カラムの型は varchar(2000) .

クエリを実行します。

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

エラーが返ってきました。

エラー 1031 (hy000)。dbo.table_1' のテーブルストレージエンジンには、このオプションがありません。

なぜこのようなことが起こるのでしょうか?また、どうすれば直るのでしょうか?

解決方法は?

この問題は、MyISAM で作成され、後に InnoDB に変更されたテーブル定義をインポートするときに発生するようです。 ROW_FORMAT オプションが無効であるように見える。

エクスポートしたデータベースをインポートしようとしてこの問題に遭遇した場合、単純に検索と置換を行うことができます。 ROW_FORMAT=FIXED を何もしないでください。

を使うと、本当にすぐにできました。

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

問題解決 ROW_FORMATが問題であることを指摘してくれたjbrahyに感謝します。

EDIT: @seven の提案により、より多くのプラットフォームで動作するように更新しました。

EDIT2: また、@Steen-Schütt の言うように、これはより安全な修正かもしれないことに注意してください。

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