mysqlエラー1031の修正方法-「catalog_product_relation」のテーブルストレージエンジンにはこのオプションがありませんか?


30

Magentoストアの新しい開発バージョンを作成しようとしています。El Capitanのクリーンインストールを行い、PHP、Mysql(バージョン5.7.10)などでApacheを実行しました。Magento用のphpmyadminを実行し、データベースを作成しました。ただし、本番サイトからバックアップをインポートしようとすると、次のエラーが表示されます。

ERROR 1031 (HY000) at line 291001: Table storage engine for 'catalog_product_relation' doesn't have this option

次のコマンドを使用して、ターミナルから.sqlファイルをインポートしようとしました。

mysql -h localhost -u <user> -D <database> -p < <file>

ここに迷いました。Googleはしばらく辞めましたが、解決策が見つかりませんでした。実動データベースと同じエンジンを使用しています。

誰にもアイデアはありますか?


どのようにしてエクスポートを作成しましたか?既に作成されたテーブルがある場合、ローカルデータベースをチェックしましたか(複数回テストした後)?その場合、新しいインポートを実行する前にそれらのテーブルをすべて削除します。
アンナフォルクル

1
それ以外の場合:たぶんこのようなもの:stackoverflow.com/a/32083169/865443
AnnaVölkl15年

回答:


49

最近、インポートでも同じ問題が発生しました。

問題

これはおそらく、CREATE TABLE DDLにあるテーブルオプションによるものです。 ROW_FORMAT=FIXED

SQLダンプにそのような文字列があるかどうかを確認しましょう(例:magento-db-dump.sql)。

cat magento-db-dump.sql | grep '=FIXED'

結果として

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product Relation Table';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product To Website Linkage Table';

溶液

ROW_FORMAT=FIXEDCREATE TABLE DDLからオプションを削除すると、問題が修正されます。可能な解決策を試してみましょう。

#1

sed -i 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

これはMacOSxでは機能せず、次のエラーが発生しました。

sed:1:“ magento-db-dump.sql”:無効なコマンドコードm

#2

sed -i '' 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

そして、これも次のようになりました。

sed:REエラー:不正なバイトシーケンス

#3 しかし、これはMacOSxで私のために働いた

LC_ALL=C sed -i '' 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

ソース


私にとっては、次のコマンドは、働いていた:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiqシャールク

1.私のためにubuntuで働いた
ジョエル・デイヴィー

@JoelDaveyはい1#はUbuntuで動作します。私はMacOSについて言及していました。
MagePsycho

10

MySQL 5.5からMySQL 5.7にMagentoデータベースダンプをインポートしようとすると、同じ問題に遭遇しました。問題は、2つのInnoDBテーブルのROW_FORMAT = FIXEDテーブルオプションにあるようです。このオプションの2つのオカレンスをデータベースダンプから削除すると、インポートをエラーなしで実行できました。

少なくともMySQL 5.7では、このオプションはMyISAMテーブルにのみ関連しているようです。


1
小規模な追加:これは、以前はinnodb_strict_modeデフォルトでオフにされていた設定に関連していますが、MySQL 5.7.7以降ではデフォルトで有効になっています(MySQLのドキュメントによる)。
Jisse Reitsma


6

別のオプションはinnodb_strict_mode = off、MySQL構成ファイルに追加することです。無人インストールを使用してこのエラーにぶつかったmagerunため、SQLファイルを編集できませんでした。InnoDb strictモードを無効にすることが運用環境で望ましいかどうかはわかりませんが、少なくとも開発環境では機能します。


1

そのテーブルはInnoDBになることを期待しています。mysqlの設定をチェックして、それが有効/許可されていることを確認します。また、そのテーブルが存在する可能性があるという提案も可能です。InnoDBが機能していることを確認したら、すべてのテーブルを削除して、もう一度試してみます。
入力したエラーメッセージが表示されない場合、InnodDBの準備が整っていないか、現在のインストールで動作していないと思われます。


mysqlをチェックしました。有効になっており、デフォルトのエンジンとして設定されています。テーブルのないまったく新しいデータベースにインポートしています。@Annaフォルクルが言っていることのソリューションをしようとします。..希望は、それが助け
Woulei
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.