Bagaimana cara memperbaiki kesalahan mysql 1031 - Mesin penyimpanan tabel untuk 'catalog_product_relation' tidak memiliki opsi ini?

30

Saya mencoba membuat versi pengembangan baru dari toko Magento kami. Saya melakukan instalasi El Capitan yang bersih dan menjalankan apache dengan PHP, Mysql (versi 5.7.10), dll. Saya juga menjalankan phpmyadmin dan membuat database untuk Magento. Namun, ketika saya mencoba mengimpor cadangan dari situs produksi kami, saya mendapatkan kesalahan:

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

Saya mencoba mengimpor file .sql melalui Terminal dengan perintah:

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

Saya tersesat di sini. Google berhenti sebentar tetapi tidak dapat menemukan solusinya. Saya menggunakan mesin yang sama seperti pada databse produksi.

Adakah yang punya ide?

Woulei
sumber
Bagaimana Anda membuat ekspor? Apakah Anda memeriksa basis data lokal Anda jika ada tabel yang sudah dibuat (setelah mengujinya beberapa kali)? Jika demikian, hapus semua tabel tersebut sebelum menjalankan impor baru.
Anna Völkl
1
Kalau tidak: Mungkin kira-kira seperti ini: stackoverflow.com/a/32083169/865443
Anna Völkl

Jawaban:

49

Baru-baru ini, saya memiliki masalah yang sama dengan impor.

MASALAH

Ini mungkin karena opsi tabel yang Anda miliki di CREATE TABLE DDLL Anda: ROW_FORMAT=FIXED

Mari kita periksa apakah ada string seperti itu di SQL dump (Ex: magento-db-dump.sql).

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

Yang menghasilkan

) 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';

LARUTAN

Menghapus ROW_FORMAT=FIXEDopsi dari CREATE TABLE DDL akan memperbaiki masalah ini. Jadi mari kita coba solusi yang mungkin.

# 1

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

Ini tidak berfungsi untuk saya di MacOSx yang menghasilkan kesalahan berikut:

sed: 1: “magento-db-dump.sql”: kode perintah tidak valid m

# 2

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

Dan bahkan ini menghasilkan:

sed: RE error: urutan byte ilegal

# 3 Tapi yang ini berhasil untuk saya di MacOSx

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

( sumber )

MagePsycho
sumber
Bagi saya, perintah berikut ini berhasil:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh
1. bekerja untuk saya di ubuntu
Joel Davey
@ JoelDavey Ya 1 # berfungsi di Ubuntu. Saya merujuk ke MacOS.
MagePsycho
10

Saya menemukan masalah yang sama ketika mencoba untuk mengimpor dump database Magento dari MySQL 5.5 ke MySQL 5.7. Masalahnya tampaknya menjadi opsi tabel ROW_FORMAT = TETAP pada dua tabel InnoDB. Menghapus dua kemunculan opsi ini dari database dump memungkinkan impor berjalan tanpa kesalahan.

Tampaknya opsi ini hanya relevan dengan tabel MyISAM , setidaknya di MySQL 5.7.

mustdobetter
sumber
1
Tambahan kecil: Ini terkait dengan pengaturan innodb_strict_modeyang digunakan untuk mematikan secara default, tetapi diaktifkan secara default mulai dari MySQL 5.7.7 (sesuai dengan dokumentasi MySQL).
Jisse Reitsma
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Work cross platform (Mac + Linux)

Aurélien
sumber
bekerja dengan sempurna di linux mint ....
Andrew Smith
6

Opsi lain adalah menambahkan innodb_strict_mode = offke file konfigurasi MySQL Anda. Saya menemukan kesalahan ini dengan menggunakan instalasi tanpa pengawasan magerunyang membuat saya tidak bisa mengedit file SQL. Saya tidak yakin apakah menonaktifkan mode ketat InnoDb diinginkan di lingkungan produksi, tetapi setidaknya itu berfungsi di lingkungan pengembangan.

Jisse Reitsma
sumber
1

Tabel itu diharapkan menjadi InnoDB. Saya akan memeriksa pengaturan mysql Anda untuk memastikan Anda mengaktifkan / memperbolehkannya. Juga, saran bahwa Anda mungkin memiliki tabel itu ada adalah mungkin. Saya akan menghapus semua tabel dan mencobanya lagi setelah Anda memvalidasi InnoDB berfungsi.
Hanya mematikan pesan kesalahan yang Anda berikan, saya berharap InnodDB tidak siap atau bekerja pada instalasi Anda saat ini.

RussellAlbin
sumber
Baru saja memeriksa mysql. itu diaktifkan dan ditetapkan sebagai mesin default. Saya mengimpornya pada database baru tanpa tabel sama sekali. Akan mencoba solusi yang @Anna Völkl katakan .. Semoga ini bisa membantu
Woulei