วิธีแก้ไขข้อผิดพลาด mysql 1031 - เครื่องมือจัดเก็บตารางสำหรับ 'catalog_product_relation' ไม่มีตัวเลือกนี้


30

ฉันกำลังพยายามสร้าง Magento store รุ่นใหม่ของเรา ฉันได้ทำการติดตั้ง El Capitan และทำความสะอาด Apache ด้วย PHP, Mysql (เวอร์ชั่น 5.7.10) เป็นต้นฉันยังมี phpmyadmin ที่ทำงานอยู่และสร้างฐานข้อมูลสำหรับ Magento อย่างไรก็ตามเมื่อฉันพยายามนำเข้าข้อมูลสำรองจากไซต์การผลิตของเราฉันได้รับข้อผิดพลาด:

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

ฉันพยายามนำเข้าไฟล์. sql ผ่าน Terminal ด้วยคำสั่ง:

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

ฉันหลงทางที่นี่ Google ออกจากบางเวลา แต่ไม่พบวิธีแก้ปัญหา ฉันใช้เอ็นจิ้นเดียวกันกับฐานข้อมูลการผลิต

ใครมีความคิดเห็นบ้าง


คุณสร้างการส่งออกได้อย่างไร คุณตรวจสอบฐานข้อมูลท้องถิ่นของคุณหรือไม่ถ้ามีตารางใดที่สร้างขึ้นแล้ว (หลังจากทดสอบหลายครั้ง) ถ้าเป็นเช่นนั้นลบตารางเหล่านั้นทั้งหมดก่อนที่จะเรียกใช้การนำเข้าใหม่
Anna Völkl

1
เป็นอย่างอื่น: อาจจะเป็นอย่างนี้: stackoverflow.com/a/32083169/865443
Anna Völkl

คำตอบ:


49

เมื่อเร็ว ๆ นี้ฉันมีปัญหาเดียวกันกับการนำเข้า

ปัญหา

นี่อาจเป็นเพราะตัวเลือกตารางที่คุณมีใน CREATE TABLE DDL: ROW_FORMAT=FIXED

ตรวจสอบว่ามีสตริงดังกล่าวอยู่ใน SQL dump หรือไม่ (เช่น: 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=FIXEDตัวเลือกจาก CREATE 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 Shahrukh

1. ทำงานให้ฉันบน Ubuntu
Joel Davey

@JoelDavey ใช่ 1 # ทำงานใน Ubuntu ฉันหมายถึง MacOS
MagePsycho

10

ฉันเจอปัญหาเดียวกันเมื่อพยายามที่จะนำเข้าฐานข้อมูล Magento จาก MySQL 5.5 ไปยัง MySQL 5.7 ปัญหาน่าจะเป็นตัวเลือกตาราง ROW_FORMAT = FIXED ในสองตาราง InnoDB การลบการเกิดขึ้นสองครั้งของตัวเลือกนี้ออกจากการถ่ายโอนข้อมูลฐานข้อมูลทำให้การนำเข้าสามารถทำงานได้โดยไม่มีข้อผิดพลาด

ดูเหมือนว่าตัวเลือกนี้จะเกี่ยวข้องกับตาราง MyISAMอย่างน้อยใน MySQL 5.7


1
เพิ่มเติมinnodb_strict_modeเล็กน้อย: มันเกี่ยวข้องกับการตั้งค่าที่เคยถูกปิดโดยปริยาย แต่ถูกเปิดใช้งานโดยค่าเริ่มต้นเริ่มต้นจาก MySQL 5.7.7 (ตามเอกสาร MySQL)
Jisse Reitsma


6

อีกทางเลือกหนึ่งคือการเพิ่มลงinnodb_strict_mode = offในไฟล์กำหนดค่า MySQL ของคุณ ฉันชนกับข้อผิดพลาดนี้โดยใช้การติดตั้งแบบไม่ต้องใส่ข้อมูลmagerunซึ่งทำให้ฉันไม่สามารถแก้ไขไฟล์ SQL ได้ ฉันไม่แน่ใจว่าการปิดใช้งานโหมดเข้มงวดของ InnoDb นั้นเป็นที่ต้องการในสภาพแวดล้อมการผลิตหรือไม่ แต่อย่างน้อยก็สามารถทำงานได้ในสภาพแวดล้อมการพัฒนา


1

ตารางนั้นคาดว่าจะเป็น InnoDB ฉันจะตรวจสอบการตั้งค่า mysql ของคุณเพื่อให้แน่ใจว่าคุณเปิดใช้งาน / อนุญาต นอกจากนี้ข้อเสนอแนะที่คุณอาจมีตารางที่มีอยู่เป็นไปได้ ฉันจะลบตารางทั้งหมดและลองอีกครั้งหลังจากที่คุณตรวจสอบว่า InnoDB ทำงาน
เพิ่งจะปิดข้อความแสดงข้อผิดพลาดที่คุณให้ฉันคาดหวังว่า InnodDB จะไม่พร้อมใช้งานหรือติดตั้งในปัจจุบันของคุณ


เพิ่งตรวจสอบ mysql มันเปิดใช้งานและตั้งเป็นเครื่องมือเริ่มต้น ฉันกำลังนำเข้าฐานข้อมูลใหม่ล่าสุดโดยไม่มีตารางเลย จะลองใช้วิธีแก้ปัญหาที่ @Anna Völklกล่าว .. หวังว่ามันจะช่วยได้
Woulei
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.