【问题标题】:Functions that are not replication safe非复制安全的函数
【发布时间】:2012-01-21 14:41:01
【问题描述】:

我的一位同事说 mysql 中的 Length() 函数不是复制安全的。此函数用于更新语句。这是真的?在编写查询并考虑复制时,我们还应该考虑什么

【问题讨论】:

    标签: mysql replication string-length


    【解决方案1】:

    因为您要复制的表也可能具有不同的字符集。主从之间的表不需要完全相同,具有相同的索引等。

    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)
    

    【讨论】:

    • 老实说,我还在学习复制。顺便说一句,我期待赢得我的论点,我认为你毁了我:)。但是让我在交叉检查后回复你。因为我相信 master 和 slave 中的 table 彼此完全相似。但我完全明白你在这里解释的内容。非常感谢
    • 不客气,从业20年我也在学习。对不起这个论点;-)
    • 好的。现在我必须调查查询并尝试删除查询的 where 子句中的长度函数,需要根据数据库设计提出。谢谢你。
    猜你喜欢
    • 2011-09-01
    • 2018-11-16
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多