2011-12-15 75 views
3

我的一位同事說MySQL中的Length()函數不是複製安全的。這個函數在update語句中使用。這是真的?在編寫查詢和考慮複製時,我們還應該考慮什麼?沒有複製安全功能

回答

2

因爲您正在複製的表也可能具有不同的字符集。沒有要求主從表之間的表格完全一樣,具有相同的索引等。

mysql> create table replic(
field1 varchar(20) character set latin1, 
field2 varchar(20) character set utf16, 
field3 varchar(20) character set utf32); 
Query OK, 0 rows affected (0.07 sec) 

mysql> insert into replic values('Adrian', 'Adrian', 'Adrian'); 
Query OK, 1 row affected (0.07 sec) 

mysql> select length(field1), length(field2), length(field3) from replic; 
+----------------+----------------+----------------+ 
| length(field1) | length(field2) | length(field3) | 
+----------------+----------------+----------------+ 
|    6 |    12 |    24 | 
+----------------+----------------+----------------+ 
1 row in set (0.00 sec) 
+0

說實話,我還在學習複製。順便說一句,我期待贏得我的論點,我認爲你毀了我:)。但是讓我在交叉檢查之後再回到你身邊。因爲我相信主人和奴隸的桌子是完全相似的。但我完全明白你在這裏解釋的。非常感謝 – user1100937 2011-12-16 00:57:48