BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: panomm ที่ ธันวาคม 23, 2008, 13:20:23 PM
-
ผมอัพเป็นเวอร์ชั่น 3.51.12.4 มีบางรายการเป็นตัว ???????? อ่านไม่ได้ครับ
เข้าไปดู สถานะของตาราง มันเป็น latin1 ครับ ไม่ใช่ tis620 จะแก้ไขยังไงครับ
ขอความช่วยเหลือหน่อยครับ
เป็นตามรูปครับ
-
...ลองสั่ง Check Charset ที่หน้าต่าง Check DB ดูนะครับ.... :D....
-
ลองแล้วครับ หลังจากนั้นเข้าไปดูใน sql ด้วยคำสั่ง show table status where collation like 'latin%'
ผลก็ยังเป็น latin1 อยู่เหมือนเดิมครับ ส่วนใหญ่ตารางที่เป็น latin1 จะมากับตัวอัพเกรด ของเวอร์ชั่นใหม่ๆ
เช่น ตาราง drg_group
จะแก้ไขยังไงต่อดีครับ
-
ใช้โปรแกรม navicat เปลี่ยน charset ของตารางเลยครับ
-
...ลองเข้าไปดูที่การกำหนดค่าของ my.cnf ด้วยนะครับ ว่า default-character-set เป็น tis620 หรือเปล่า ผมสงสัยว่าจะเป็น latin1 อยู่นะครับ....
...ไม่งั้นเวลาที่มีการสร้างตารางใหม่ เช่น ตอน upgrade structure แล้วมีการสร้างตารางใหม่เพิ่มขึ้นมา ก็จะเป็น latin1 อีกครับ....
-
/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
-
....
/etc/my.cnf ของผมเป็นแบบนี้ครับ ค้นหาแล้วไม่เห็นมี latin1 นะครับ งงงง ??? ??? ???
....งงเหมือนกันครับ.. ;D ... เดี๋ยวรอ อ.อ๊อด ชักดาบออกมาช่วยด้วยครับ.... ;D....
-
ใช้คำสั่งนี้ ปรับปรุงก็ได้ครับ แต่ต้องทำทีละตาราง
เปลี่ยนชื่อตารางใน `xxxxxx` ตารางที่ยังเป็น latin1 อยู่นะครับ
ALTER TABLE `adr_cause` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci
-
thank 1 ดอกครับ ;D ;D
-
ใช้คำสั่งนี้ ปรับปรุงก็ได้ครับ แต่ต้องทำทีละตาราง
เปลี่ยนชื่อตารางใน `xxxxxx` ตารางที่ยังเป็น latin1 อยู่นะครับ
ALTER TABLE `adr_cause` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci
อื่ม ของผม นับดูแล้วมีประมาณ 200 กว่า ตารางที่เป็น latin1 ดูท่าเหนื่อยมากเลยครับท่าน
พอจะมีคำสั่งที่ให้ไปตรวจสอบว่าตารางไหน COLLATE เป็น latin1 ให้ทำการ ALTER TABLE ครับ
ขอบคุณครับ
-
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.
-----------------
-
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว
-
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว
::)
ขอบคุณครับ จะรอโหลดเวอร์ชั่นใหม่ อาจารย์ครับ อย่าลืมทำ Tools ReSize Picture ในตาราง ER_Image นะครับ รูปผู้ป่วย เยอะมากครับ และก็ใหญ่มากครับ
ขอบคุณครับ ;D ;D ;D
-
ลองกดปุ่ม Check Charset ใหม่ใน 3.51.12.24 นะครับ แก้ไขให้แล้ว
ลองใช้งานแล้วครับ 3.51.12.24 และ 3.51.12.25d ในส่วนของ ปุ่ม Check Charset ระบบได้ปรับตารางที่เป็นlatin1 ให้เป็น tis620 ทั้งหมดแล้วครับ เหลือเพียงแต่ข้อมูลในตารางมันยังเป็น เครื่องหมายคำถาม ?? อยู่ครับ
อาจารย์ช่วยดูอีกทีครับ
ตามรูปเลยครับ
-
ลบข้อมูลออกแล้ว append จาก แฟ้มใน C:\Program Files\HOSxP\Dataset แทนครับ
-
สงสัยต้อง Restore ใหม่ครับ
-
ลบข้อมูลออกแล้ว append จาก แฟ้มใน C:\Program Files\HOSxP\Dataset แทนครับ
อาจารย์ครับ ได้แล้วครับ แต่..... ตารางที่จะต้อง open+appen เข้าไปใหม่ เยอะมากครับ ประมาณ 200 กว่าตารางครับ มีวิธีได้ ทำได้เร็วๆ บ้างครับ
ขอบคุณครับ
-
ลองศึกษาตามที่นี่ดูนะครับ
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 แต่ยังไม่เคยลอง)
ยังไงก็อย่าลืมสำรองข้อมูลไว้ด้วยนะครับ เดี๋ยวเกิดข้อผิดพลาด
-
เอาเฉพาะตารางที่มีปัญหา ????? นะครับ ไม่ต้องเอาทั้งหมด