BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: yord ที่ ธันวาคม 11, 2008, 11:13:59 AM

หัวข้อ: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 11:13:59 AM
อ.ทุกท่านครับ
หลังจากที่ผม ได้ทำการ Initail Import เมื่อวานนี้ และทำ InnoDB เรียบร้อย การใช้งานเรียบร้อยดี
แต่มาวันนี้ ลองทำรายงาน 504 ของผู้ป่วยนอก ข้อมูลออกมาเป็น 0 หมดเลยครับ ???
ก็เลยไปลองตรวจสอบใน ตาราง ovstdiag ดูแล้วขาดข้อมูลโรคไปหลายเดือนเลยครับ  :'(
จะทำอย่างไรให้ diag กลับเข้ามาในตาราง ovstdiag ได้เหมือนเดิม หรือเท่าเดิมได้อย่างไรครับ :'( :'( :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 11:52:23 AM
 :'( :'( :'(ช่วยด้วยครับ  :'( :'( :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 11, 2008, 11:58:06 AM
ผมคิดว่าข้อมูลหายน่าจะเกิดจากสาเหตุอื่นนะครับ ปกติการทำ High performance โปรแกรมจะ copy แฟ้มไปไว้ในตารางใหม่ก่อนจึงค่อยแปลงครับ และหากพบว่ามีข้อมูลสูญหายจะแสดงหน้าต่างให้ยืนยันการแปลงก่อน

ลองเอาข้อมูลที่ backup เอาไว้มาใช้ก่อนก็ได้ครับ
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 12:03:11 PM
จะเกิดจากการ Initial Import ได้หรือเปล่าครับ  ???
แล้วทีนี้ข้อมูลที่สำรองเอาไว้ไม่ได้เป็น InnoDB น่ะครับ
ถ้าจะ append หรือ insert record ตั้งแต่ .. ถึง .. ได้ไหมครับ
ข้อมูลหายตั้งแต่ 13/01/50 - 09/12/51 เลยครับ อ. :'( :'( :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 11, 2008, 12:21:09 PM
สร้าง database ใหม่ในเครื่อง Master ชื่อ  bak

copy แฟ้ม ovstdiag.* (ต้องเป็น Myisam) จากเครื่องอื่น (ที่ restore ข้อมูลไว้) มาไว้ใน folder /var/lib/mysql/bak

restart mysql ใหม่

ใช้คำสั่ง

insert ignore into hos.ovstdiag select * from bak.ovstdiag
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 13:23:44 PM
ขอบคุณครับ อ. ;D
โดยที่ ตอนนี้ผมทำ InnoDB ไปแล้ว ได้ 94% นะครับ
ให้ copy แฟ้ม ovstdiag.* (ต้องเป็น Myisam) จากเครื่องอื่น (ที่ restore ข้อมูลไว้) มาไว้ใน folder /var/lib/mysql/bak ตามนี้เลยนะครับ
และใช้ คำสั่งนี้จาก mysql> ใช่ไหมครับ อ. ???
insert ignore into hos.ovstdiag select * from bak.ovstdiag
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 15:37:45 PM
ผม copy ovstdiag.* ไปไว้ที่ folder /var/lib/mysql/bak
[root]# service mysql restart
[root]# mysql
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag
นิ่งเฉยครับ
ถูกต้องหรือเปล่าครับ  ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 18:11:22 PM
 ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: howtodo ที่ ธันวาคม 11, 2008, 21:36:51 PM
ปกติ  ในการทำ transaction  จากMyIsam  เป็น  INNODB
ถ้าไม่สำเร็จ จะกลับ  ไปเป็น  MyISAM  เหมือนเดิม

แนะนำให้ download  โปรแกรม Navicat   มาใช้

Mysql  จะง่ายทันที
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 23:19:10 PM
เจอแล้วครับ http://www.pluzz.co.cc/showthread.php?t=33 เดี๋ยวจะลองดูครับ  ;D
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 11, 2008, 23:45:45 PM
crack ครับ http://astalavista.box.sk/cgi-bin/robot?srch=navicat
แล้วไม่ทราบว่าจะ insert เข้าไปได้ไงครับ  :'(
ช่วยหน่อยครับ  ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 12, 2008, 11:20:56 AM
จะตกบอร์ดแล้วครับ  ;D
ยังแก้ไม่ได้เลยครับ  :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 12, 2008, 11:23:30 AM
ผม copy ovstdiag.* ไปไว้ที่ folder /var/lib/mysql/bak
[root]# service mysql restart
[root]# mysql
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag
นิ่งเฉยครับ
ถูกต้องหรือเปล่าครับ  ???

ต้องปิด statement ด้วยเครื่องหมาย ;  ด้วยครับ
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 12, 2008, 11:44:12 AM
ขอบคุณครับ อ.  ;D(ผมตกม้าตายอีกแล้วสิ) ::)
mysql> insert ignore into hos.ovstdiag select * from bak.ovstdiag;
Query OK, 0 rows affectec, 1 warning (0.91 sec)
ถูกต้องไหมครับ อ.
เข้าไปตรวจสอบ แล้ว ข้อมูลเหมือนเดิมครับ  :'(
ต้องทำไงต่อหรือเปล่าครับ  :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 12, 2008, 11:46:02 AM
select count(*) from bak.ovstdiag ได้เท่าไหร่ครับ
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 12, 2008, 11:54:32 AM
select count(*) from bak.ovstdiag;
ได้ 1252818 ครับ
select count(*) from hos.ovstdiag;
ได้ 816455 ครับ  ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 12, 2008, 12:10:32 PM
describe bak.ovstdiag ;

กับ

describe hos.ovstdiag;

ได้ผลเหมือนกันหรือเปล่าครับ
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 12, 2008, 13:25:13 PM
เหมือนกันครับ อ.
แต่ bak.ovstdiag เป็น MyISAM ตามที่ อ.บอกครับ
ส่วน hos.ovstdiag เป็น InnoDB ครับ อ.  ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 12, 2008, 15:10:30 PM
ลอง insert ignore into hos.ovstdiag select * from  bak.ovstdiag ใหม่ได้หรือเปล่าครับ
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 12, 2008, 16:07:12 PM
ไม่ได้เหมือนเดิมครับ อ.  ???
Query OK, 0 rows affectec, 1 warning (0.91 sec) ??? ??? ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: howtodo ที่ ธันวาคม 13, 2008, 00:22:43 AM
ช่วย 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

ผลคือข้อมูลกลับมาอย่างเดิม
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 13, 2008, 16:57:46 PM
hos.ovstdiag  ของผมมันเป็น innodb ครับ แต่ bak.ovstdiag มันเป็น myisam น่ะสิครับ หรือว่าต้องทำให้ bak.ovstdiag เป็น innodb ก่อนน่ะครับ
ถ้าอย่างนั้นมี คำสั่งที่ทำให้ เป็น innodb เฉพาะตารางเดียวมีไหมครับ  ???
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: howtodo ที่ ธันวาคม 13, 2008, 18:10:46 PM
ใน  navicat  เข้าไปที่  design table  เลือก   option data type  save เปลี่ยนได้เลย

แต่  จะเป็น  innodb  และอีกตารางเป็น  myisam ก็ไม่มีปัญหากันกับคำสั่งของอ.mn

ผมแนะนำให้   export  table เป็น file sql  จะดีกว่า  copy *
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: yord ที่ ธันวาคม 13, 2008, 18:34:45 PM
ขอบคุณมากครับ  ;D
ผมลองใช้ navicat เปิดดูข้อมูล เมื่อเลื่อนไปหน้าอื่นๆ เรื่อยๆ (ถูก limit ไว้ที่ 1000) ก็พบว่าตารางต้องทำการซ่อมก่อน เมื่อผมซ่อมตารางเรียบร้อยแล้ว และใช้คำสั่ง insert ignore into hos.ovstdiag_copy select * from  hos.ovstdiag; นี้ ก็ได้
Records: 1252814 Duplicates: 814783 Warnings: 0
ดีใจครับ  ;D
สรุปคือ ตารางเสีย ต้องซ่อมก่อนครับ  :'(
หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ มกราคม 17, 2009, 17:11:41 PM
ผมเจอปัญหานี้ครั้งแรก กำลังแก้เลยครับ ทุกตารางเลย

หัวข้อ: Re: ด่วนครับ ! ข้อมูลในตาราง
เริ่มหัวข้อโดย: golf_win ที่ มกราคม 17, 2009, 21:06:57 PM
สู้ๆ ครับพี่บอย  ;D ;D
เป็นที่พึ่งให้น้องๆ ได้เสมอ ;) ;)