วันพฤหัสบดีที่ 14 สิงหาคม พ.ศ. 2557

SQLite เจอปัญหา database disk image is malformed



     ผมเจอปัญหานี้ใน SQLite ครับ เพราะใช้คำสั่ง Insert Multi Record (เพิ่มข้อมูลหลายๆเรคคอร์ด โดยการวนลูป) พอจะแก้ไขข้อมูล ทำไม่ได้ขึ้นเออเร่อ database disk image is malformed  ทำเอางงอยู่เหมือนกัน เป็นงานเร่งซะด้วย ทำให้ไม่สามารถแก้ไขหรือลบข้อมูลเดิมได้ แต่สามารถเพิ่มข้อมูลใหม่ แก้ไขข้อมูลใหม่ ลบข้อมูลใหม่ได้ ข้อมูลเก่าหรือข้อมูลเดิมที่เพิ่มเข้าก่อนหน้าจะเจอปัญหานี้ ไม่สามารถแก้ไขหรือลบได้
     วิธีแก้ไขปัญหาก็เสิร์ทดูในเว็บต่างประเทศ เห็นเขาบอกให้ใช้คำสั่ง .mode insert ฯลฯ ก็ใช้ไม่ได้ผล ลองมาหมดทุกวิธี จนต้องคิดวิธีแก้ปัญหาด้วยตัวเอง คิดไปคิดมา วิธีแก้ปัญหามันช่างง่ายแสนง่าย เพราะไปเสียเวลากับวิธีแก้ปัญหาของคนอื่น

วิธีแก้ปัญหานะครับ

1.Export Database ที่มีปัญหาออกมาก่อน โดยใช้โปรแกรม SQLite Manager ซึ่งเป็น AddOn ของ Firefox ให้ติดตั้งให้เรียบร้อย วิธีใช้งานก็ดูตามนี้ http://php-for-ecommerce.blogspot.com/2013/06/sqlite-php.html  ให้เปิด Database เจ้าปัญหาออกมาก่อน และไปที่เมนู Database เลือก Export Database ดังรูป


จะได้ไฟล์ .sql ให้เราSaveเก็บไฟล์ไว้ตรงไหนก็ได้ ดังรูป



 2.เมื่อเราได้ไฟล์ .sql ที่เกิดจากการ Export Database แล้ว ให้สร้างไฟล์เปล่าๆขึ้นตั้งชื่ออะไรก็ได้ ให้มีนามสกุล .db ส่วนผมตั้งชื่อว่า dbbase.db


3.ให้เปิดไฟล์เปล่าๆ .db ที่สร้างในขั้นตอนที่ 2 ขึ้นมาในโปรแกรม SQLite Manager โดยไปที่ Connect Database


และให้เลือกเปิดไฟล์ .db ที่เราได้สร้างจากขั้นตอนที่ 2 ดังรูป


4.เมื่อเราเปิดไฟล์ที่เราสร้างจากขั้นตอนที่ 2 แล้ว ให้คลิกที่ปุ่ม Import ดังรูป


จะได้หน้าต่าง Import Wizard


ให้เลือกไฟล์ .sql ที่เราได้ Export จากขั้นตอนที่ 1 เข้ามา แล้วกด OK ให้กลับไปลบฐานข้อมูลเดิมทิ้งได้เลย และสามารถเปลี่ยนชื่อฐานข้อมูลตัวใหม่ที่เราสร้างให้เป็นชื่อเดิมของฐานข้อมูลเดิมได้ครับ  เท่านี้เราก็จะได้ฐานข้อมูลเดิมที่ไม่มีปัญหากลับคืนมาแล้วครับ

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

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