BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: yord ที่ ธันวาคม 11, 2008, 11:13:59 AM
-
อ.ทุกท่านครับ
หลังจากที่ผม ได้ทำการ Initail Import เมื่อวานนี้ และทำ InnoDB เรียบร้อย การใช้งานเรียบร้อยดี
แต่มาวันนี้ ลองทำรายงาน 504 ของผู้ป่วยนอก ข้อมูลออกมาเป็น 0 หมดเลยครับ ???
ก็เลยไปลองตรวจสอบใน ตาราง ovstdiag ดูแล้วขาดข้อมูลโรคไปหลายเดือนเลยครับ :'(
จะทำอย่างไรให้ diag กลับเข้ามาในตาราง ovstdiag ได้เหมือนเดิม หรือเท่าเดิมได้อย่างไรครับ :'( :'( :'(
-
:'( :'( :'(ช่วยด้วยครับ :'( :'( :'(
-
ผมคิดว่าข้อมูลหายน่าจะเกิดจากสาเหตุอื่นนะครับ ปกติการทำ High performance โปรแกรมจะ copy แฟ้มไปไว้ในตารางใหม่ก่อนจึงค่อยแปลงครับ และหากพบว่ามีข้อมูลสูญหายจะแสดงหน้าต่างให้ยืนยันการแปลงก่อน
ลองเอาข้อมูลที่ backup เอาไว้มาใช้ก่อนก็ได้ครับ
-
จะเกิดจากการ Initial Import ได้หรือเปล่าครับ ???
แล้วทีนี้ข้อมูลที่สำรองเอาไว้ไม่ได้เป็น InnoDB น่ะครับ
ถ้าจะ append หรือ insert record ตั้งแต่ .. ถึง .. ได้ไหมครับ
ข้อมูลหายตั้งแต่ 13/01/50 - 09/12/51 เลยครับ อ. :'( :'( :'(
-
สร้าง database ใหม่ในเครื่อง Master ชื่อ bak
copy แฟ้ม ovstdiag.* (ต้องเป็น Myisam) จากเครื่องอื่น (ที่ restore ข้อมูลไว้) มาไว้ใน folder /var/lib/mysql/bak
restart mysql ใหม่
ใช้คำสั่ง
insert ignore into hos.ovstdiag select * from bak.ovstdiag
-
ขอบคุณครับ อ. ;D
โดยที่ ตอนนี้ผมทำ InnoDB ไปแล้ว ได้ 94% นะครับ
ให้ copy แฟ้ม ovstdiag.* (ต้องเป็น Myisam) จากเครื่องอื่น (ที่ restore ข้อมูลไว้) มาไว้ใน folder /var/lib/mysql/bak ตามนี้เลยนะครับ
และใช้ คำสั่งนี้จาก mysql> ใช่ไหมครับ อ. ???
insert ignore into hos.ovstdiag select * from bak.ovstdiag
-
ผม copy ovstdiag.* ไปไว้ที่ folder /var/lib/mysql/bak
[root]# service mysql restart
[root]# mysql
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag
นิ่งเฉยครับ
ถูกต้องหรือเปล่าครับ ???
-
???
-
ปกติ ในการทำ transaction จากMyIsam เป็น INNODB
ถ้าไม่สำเร็จ จะกลับ ไปเป็น MyISAM เหมือนเดิม
แนะนำให้ download โปรแกรม Navicat มาใช้
Mysql จะง่ายทันที
-
เจอแล้วครับ http://www.pluzz.co.cc/showthread.php?t=33 เดี๋ยวจะลองดูครับ ;D
-
crack ครับ http://astalavista.box.sk/cgi-bin/robot?srch=navicat
แล้วไม่ทราบว่าจะ insert เข้าไปได้ไงครับ :'(
ช่วยหน่อยครับ ???
-
จะตกบอร์ดแล้วครับ ;D
ยังแก้ไม่ได้เลยครับ :'(
-
ผม copy ovstdiag.* ไปไว้ที่ folder /var/lib/mysql/bak
[root]# service mysql restart
[root]# mysql
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag
นิ่งเฉยครับ
ถูกต้องหรือเปล่าครับ ???
ต้องปิด statement ด้วยเครื่องหมาย ; ด้วยครับ
-
ขอบคุณครับ อ. ;D(ผมตกม้าตายอีกแล้วสิ) ::)
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag;
Query OK, 0 rows affectec, 1 warning (0.91 sec)
ถูกต้องไหมครับ อ.
เข้าไปตรวจสอบ แล้ว ข้อมูลเหมือนเดิมครับ :'(
ต้องทำไงต่อหรือเปล่าครับ :'(
-
select count(*) from bak.ovstdiag ได้เท่าไหร่ครับ
-
select count(*) from bak.ovstdiag;
ได้ 1252818 ครับ
select count(*) from hos.ovstdiag;
ได้ 816455 ครับ ???
-
describe bak.ovstdiag ;
กับ
describe hos.ovstdiag;
ได้ผลเหมือนกันหรือเปล่าครับ
-
เหมือนกันครับ อ.
แต่ bak.ovstdiag เป็น MyISAM ตามที่ อ.บอกครับ
ส่วน hos.ovstdiag เป็น InnoDB ครับ อ. ???
-
ลอง insert ignore into hos.ovstdiag select * from bak.ovstdiag ใหม่ได้หรือเปล่าครับ
-
ไม่ได้เหมือนเดิมครับ อ. ???
Query OK, 0 rows affectec, 1 warning (0.91 sec) ??? ??? ???
-
ช่วย export ทั้งสอง ตารางออกมาเป็น sql หน่อยครับ น่าจะเกิดจากอย่างอื่นหรือเปล่า
ตัวเต็ม hos.ovstdiag (myisam)
ผมลองลบข้อมูล hos.ovstdiag_copy (innodb) ออกไปส่วนหนึ่งแ้ล้ว รัน
insert ignore into hos.ovstdiag_copy select * from hos.ovstdiag
Affected rows: 256
Time: 1.235ms
ผลคือข้อมูลกลับมาอย่างเดิม
-
hos.ovstdiag ของผมมันเป็น innodb ครับ แต่ bak.ovstdiag มันเป็น myisam น่ะสิครับ หรือว่าต้องทำให้ bak.ovstdiag เป็น innodb ก่อนน่ะครับ
ถ้าอย่างนั้นมี คำสั่งที่ทำให้ เป็น innodb เฉพาะตารางเดียวมีไหมครับ ???
-
ใน navicat เข้าไปที่ design table เลือก option data type save เปลี่ยนได้เลย
แต่ จะเป็น innodb และอีกตารางเป็น myisam ก็ไม่มีปัญหากันกับคำสั่งของอ.mn
ผมแนะนำให้ export table เป็น file sql จะดีกว่า copy *
-
ขอบคุณมากครับ ;D
ผมลองใช้ navicat เปิดดูข้อมูล เมื่อเลื่อนไปหน้าอื่นๆ เรื่อยๆ (ถูก limit ไว้ที่ 1000) ก็พบว่าตารางต้องทำการซ่อมก่อน เมื่อผมซ่อมตารางเรียบร้อยแล้ว และใช้คำสั่ง insert ignore into hos.ovstdiag_copy select * from hos.ovstdiag; นี้ ก็ได้
Records: 1252814 Duplicates: 814783 Warnings: 0
ดีใจครับ ;D
สรุปคือ ตารางเสีย ต้องซ่อมก่อนครับ :'(
-
ผมเจอปัญหานี้ครั้งแรก กำลังแก้เลยครับ ทุกตารางเลย
-
สู้ๆ ครับพี่บอย ;D ;D
เป็นที่พึ่งให้น้องๆ ได้เสมอ ;) ;)