BMS-HOSxP Community

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

หัวข้อ: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 23, 2008, 13:20:23 PM
ผมอัพเป็นเวอร์ชั่น 3.51.12.4 มีบางรายการเป็นตัว ???????? อ่านไม่ได้ครับ
เข้าไปดู สถานะของตาราง มันเป็น latin1 ครับ ไม่ใช่ tis620 จะแก้ไขยังไงครับ
ขอความช่วยเหลือหน่อยครับ
เป็นตามรูปครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: Khuad ที่ ธันวาคม 23, 2008, 13:45:25 PM


...ลองสั่ง Check Charset ที่หน้าต่าง Check DB ดูนะครับ.... :D....

หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 23, 2008, 14:38:55 PM
ลองแล้วครับ  หลังจากนั้นเข้าไปดูใน sql ด้วยคำสั่ง show table status where collation like 'latin%'
ผลก็ยังเป็น latin1 อยู่เหมือนเดิมครับ ส่วนใหญ่ตารางที่เป็น latin1 จะมากับตัวอัพเกรด ของเวอร์ชั่นใหม่ๆ
เช่น ตาราง drg_group 
จะแก้ไขยังไงต่อดีครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: Knott ที่ ธันวาคม 23, 2008, 14:44:18 PM
ใช้โปรแกรม navicat เปลี่ยน charset ของตารางเลยครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: Khuad ที่ ธันวาคม 23, 2008, 15:05:56 PM

...ลองเข้าไปดูที่การกำหนดค่าของ my.cnf ด้วยนะครับ  ว่า default-character-set เป็น tis620 หรือเปล่า  ผมสงสัยว่าจะเป็น latin1 อยู่นะครับ....

...ไม่งั้นเวลาที่มีการสร้างตารางใหม่ เช่น ตอน upgrade structure แล้วมีการสร้างตารางใหม่เพิ่มขึ้นมา ก็จะเป็น latin1 อีกครับ....
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 23, 2008, 15:34:09 PM
/etc/my.cnf    ของผมเป็นแบบนี้ครับ ค้นหาแล้วไม่เห็นมี latin1 นะครับ งงงง  ??? ??? ???

[client]
port      = 3306
socket      = /var/lib/mysql/mysql.sock
default-character-set=tis620

[mysqld]
port      = 3306
socket      = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 1024M
max_allowed_packet = 32M
table_cache = 1500
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 128M
thread_cache = 8
query_cache_size= 32M

thread_concurrency = 8
default-character-set=tis620
skip-name-resolve
innodb_file_per_table
skip-character-set-client-handshake
init_connect = 'SET NAMES tis620'


innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/
innodb_log_arch_dir = /var/lib/mysql/
innodb_buffer_pool_size = 950M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 128M
allow-keywords

[mysql]
no-auto-rehash
default-character-set=tis620

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: Khuad ที่ ธันวาคม 23, 2008, 15:38:34 PM

....

/etc/my.cnf    ของผมเป็นแบบนี้ครับ ค้นหาแล้วไม่เห็นมี latin1 นะครับ งงงง  ??? ??? ???


....งงเหมือนกันครับ.. ;D ... เดี๋ยวรอ อ.อ๊อด ชักดาบออกมาช่วยด้วยครับ.... ;D....
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: armds ที่ ธันวาคม 23, 2008, 16:01:55 PM
ใช้คำสั่งนี้  ปรับปรุงก็ได้ครับ  แต่ต้องทำทีละตาราง 
เปลี่ยนชื่อตารางใน   `xxxxxx`  ตารางที่ยังเป็น  latin1  อยู่นะครับ

ALTER TABLE `adr_cause` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: thannawe ที่ ธันวาคม 23, 2008, 16:04:29 PM
thank 1 ดอกครับ ;D ;D
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 24, 2008, 13:12:49 PM
ใช้คำสั่งนี้  ปรับปรุงก็ได้ครับ  แต่ต้องทำทีละตาราง 
เปลี่ยนชื่อตารางใน   `xxxxxx`  ตารางที่ยังเป็น  latin1  อยู่นะครับ

ALTER TABLE `adr_cause` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci


อื่ม ของผม นับดูแล้วมีประมาณ 200 กว่า ตารางที่เป็น latin1 ดูท่าเหนื่อยมากเลยครับท่าน
พอจะมีคำสั่งที่ให้ไปตรวจสอบว่าตารางไหน COLLATE เป็น latin1 ให้ทำการ ALTER TABLE ครับ
ขอบคุณครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: doramon ที่ ธันวาคม 24, 2008, 13:23:58 PM
DFM
-----------------
object Form23: TForm23
  Left = 0
  Top = 0
  Caption = 'Character set changer'
  ClientHeight = 388
  ClientWidth = 364
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poMainFormCenter
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 48
    Top = 84
    Width = 24
    Height = 13
    Caption = '------'
  end

    object Label2: TLabel
    Left = 120
    Top = 120
    Width = 24
    Height = 13
    Caption = '------'
  end

  object Button1: TButton
    Left = 48
    Top = 24
    Width = 274
    Height = 49
    Caption = 'Start'
    TabOrder = 0
    OnClick = Button1Click
  end
  object pg: TProgressBar
    Left = 48
    Top = 171
    Width = 274
    Height = 17
    TabOrder = 1
  end
  object LogMemo: TMemo
    Left = 48
    Top = 222
    Width = 274
    Height = 139
    ScrollBars = ssVertical
    TabOrder = 2
  end
end

----------------

PAS
-----------------
unit Unit23;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm23 = class(TForm)
    Button1: TButton;
    pg: TProgressBar;
    Label1: TLabel;
    Label2: TLabel;
    LogMemo: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form23: TForm23;

implementation

{$R *.dfm}

procedure TForm23.Button1Click(Sender: TObject);
var tc,ts:tclientdataset;  i:integer;
 begin
   tc:=tclientdataset.create(nil);
   ts:=tclientdataset.create(nil);
   tc.data:=hosxp_getdataset('show tables');
   pg.position:=0;
   pg.max:=tc.recordcount;
   while not tc.eof do
   begin
     label1.caption:=tc.fields[0].asstring;
     ts.data:=hosxp_getdataset('show create table '+tc.fields[0].asstring);
     
     i:=pos('latin1',ts.fields[1].asstring);


     if i>0 then
     begin
      logmemo.lines.add('Change...'+tc.fields[0].asstring);
     try
       hosxp_getdataset('alter table '+tc.fields[0].asstring+' DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci');
     except end;
     end;
     
     pg.position:=pg.position+1;
     application.processmessages;
     tc.next;
   end;

   tc.free;
   ts.free;
                     
   showmessage('Done.');

end;

end.


-----------------
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 24, 2008, 13:36:15 PM
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 24, 2008, 13:56:58 PM
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว
::)
ขอบคุณครับ จะรอโหลดเวอร์ชั่นใหม่  อาจารย์ครับ อย่าลืมทำ Tools ReSize Picture ในตาราง ER_Image นะครับ รูปผู้ป่วย เยอะมากครับ และก็ใหญ่มากครับ
ขอบคุณครับ  ;D ;D ;D
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 26, 2008, 13:19:44 PM
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว

ลองใช้งานแล้วครับ 3.51.12.24 และ 3.51.12.25d ในส่วนของ ปุ่ม Check Charset ระบบได้ปรับตารางที่เป็นlatin1 ให้เป็น tis620 ทั้งหมดแล้วครับ  เหลือเพียงแต่ข้อมูลในตารางมันยังเป็น เครื่องหมายคำถาม ?? อยู่ครับ
อาจารย์ช่วยดูอีกทีครับ
ตามรูปเลยครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 26, 2008, 13:26:38 PM
ลบข้อมูลออกแล้ว append จาก แฟ้มใน C:\Program Files\HOSxP\Dataset แทนครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: monalisa ที่ ธันวาคม 26, 2008, 13:37:46 PM
สงสัยต้อง Restore ใหม่ครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: panomm ที่ ธันวาคม 26, 2008, 13:40:10 PM
ลบข้อมูลออกแล้ว append จาก แฟ้มใน C:\Program Files\HOSxP\Dataset แทนครับ
อาจารย์ครับ ได้แล้วครับ แต่..... ตารางที่จะต้อง open+appen เข้าไปใหม่ เยอะมากครับ ประมาณ 200 กว่าตารางครับ มีวิธีได้ ทำได้เร็วๆ บ้างครับ
ขอบคุณครับ
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: monalisa ที่ ธันวาคม 26, 2008, 13:46:17 PM
ลองศึกษาตามที่นี่ดูนะครับ

http://muzso.hu/2008/04/09/how-to-change-the-character-set-andor-collation-in-a-mysql-database-for-all-tables-and-co

หรือ

http://kb.siteground.com/article/How_to_change_the_collation_for_all_tables_in_db_to_UTF8.html

หรือ

http://www.phoca.cz/download/category/17-phoca-changing-collation-tool  (php script แต่ยังไม่เคยลอง)


ยังไงก็อย่าลืมสำรองข้อมูลไว้ด้วยนะครับ เดี๋ยวเกิดข้อผิดพลาด
หัวข้อ: Re: ช่วยด้วย ตารางเป็น latin1 ครับ
เริ่มหัวข้อโดย: manoi ที่ ธันวาคม 26, 2008, 15:01:13 PM
เอาเฉพาะตารางที่มีปัญหา ????? นะครับ ไม่ต้องเอาทั้งหมด