วันพฤหัสบดีที่ 9 กันยายน พ.ศ. 2564

แก้ปัญหา MySQL - Please DISCARD the tablespace before IMPORT

เจอว่าระบบฐานข้อมูลเกิดรวนเพราะก่อนหน้านั้นเครื่องคอมฯ แฮงค์บ่อย เลยอาจทำให้การอ่านเขียนข้อมูลใน database เกิดความเสียหาย

ตอนแรกว่าจะ format ระบบแล้วติดตั้งใหม่ แต่ด้วยความขี้เกียจ restore พวกข้อมูลที่ backup เอาไว้ เลยลองลบ xampp ในเครื่องแล้วลองติดตั้งใหม่ดูก่อน

พอติดตั้ง xampp ใหม่เสร็จ พอเปิด phpmyadmin ขึ้นมา ปรากฏว่าฐานข้อมูลต่างๆ ยังอยู่เหมือนเดิม เลยสงสัยว่าแบบนี้ อาการรวนอาจจะไม่หายไป เพราะ database ยังอยู่


แต่พอเรียกดูข้อมูลใน database ปรากฏว่าเรียกขึ้นมาดูไม่ได้ และพื้นที่ก็ใช้ไปแค่ 0 แสดงว่าข้อมูลถูกลบไปแล้ว แต่รายชื่อ table ยังอยู่ ก็เลยใช้ phpmyadmin ลบ table ใน database ทิ้งไป

ทีนี้ก็สั่ง import ไฟล์ sql ที่สำรองเอาไว้ก่อนหน้า ปรากฏว่าไม่สำเร็จ ขึ้นข้อความบอกว่า

Error : Tablespace for table '`database`.`xxxxx`' exists. Please DISCARD the tablespace before IMPORT.

เอาล่ะสิ งานเข้า!

ไปค้นๆ ข้อมูลดู แต่ยังไม่เจอที่ให้ตอบมาแบบตรงๆ แก้ปัญหาได้ทันที

แต่เจอคนบอกว่ามันลบไฟล์ที่เก็บข้อมูล xxxxx.frm ไป แต่ว่าไม่ได้ลบไฟล์สารบัญ xxxxx.ibd

พยายามไปตามหาว่าไอ้ที่เก็บไฟล์นี้ในเครื่องมันอยู่ที่ไหนกันแน่ (ผมใช้ elementaryOS 5.1.7 Hera Based on Ubuntu 18.04 LTS)

แล้วก็ไปเจออยู่ที่ 

/opt/lampp/var/mysql/ชื่อ database/

เข้าไปดูแล้วเห็นว่าในนี้ไม่มีไฟล์ xxxxx.frm อยู่เลย มีแต่ xxxxx.ibd เท่านั้น เลยสั่งลบทิ้งหมด ** ก่อนลบไฟล์ ให้ปิด service ก่อน **

จากนั้นเข้า phpmyadmin แล้วสั่ง import ดูใหม่ คราวนี้ผ่านฉลุย ใช้งานได้

* * * * *

[Keywords]

Ubuntu, Linux, MySQL, xampp

ไม่มีความคิดเห็น:

แสดงความคิดเห็น