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 ให้กลับไปลบฐานข้อมูลเดิมทิ้งได้เลย และสามารถเปลี่ยนชื่อฐานข้อมูลตัวใหม่ที่เราสร้างให้เป็นชื่อเดิมของฐานข้อมูลเดิมได้ครับ  เท่านี้เราก็จะได้ฐานข้อมูลเดิมที่ไม่มีปัญหากลับคืนมาแล้วครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีใช้งาน Ubuntu Server && Debian Server

ติดตั้ง pip3 ใน linux และวิธีใช้งาน

สร้าง Service ให้ Run สคริปต์ Python ใน Debian