2011-12-15 64 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