同步故障Last_Errno:1418

mysql主从同步,从库又出现问题:

<pre name="code" class="sql">mysql> show slave status\G
*************************** 1. row ***************************
            ........
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   <span style="color:#ff6666;">Last_Errno: 1418</span>
                   Last_Error: Error 'This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)' on query. Default database: 'gmkq'. Query: 'CREATE DEFINER=`kaoqin`@`%` FUNCTION `queryChildrenAreaInfo`(areaId INT) RETURNS varchar(4000) CHARSET utf8....
 

明显是主库创建的函数,从库无法同步创建。该错误信息意思是:

在该子程序的在其声明没有DETERMINISTIC、NO SQL或READS SQL DATA,而且二进制日志功能已启用(你或许打算使用不太安全的log_bin_trust_routine_creators变量)

mysql对存储过程、函数及触发器的同步,尤其是对函数,需要在创建时必须添加相应的关键字:

1、DETERMINISTIC——确定的(说明:如果程序或线程总是对同样的输入参数产生同样的结果,则被认为它是“确定的”,否则就是“非确定”的。);
2、NO SQL——没有SQl语句,当然也不会修改数据;
3、READS SQL DATA——只是读取数据,当然也不会修改数据;
4、MODIFIES SQL DATA——要修改数据;
5、CONTAINS SQL——包含了SQL语句。

当然主库已经创建了好多函数,且日志已到从库。那只能采取另一种解决方法:

从库设置log_bin_trust_function_creators。

<pre name="code" class="sql">mysql> show variables like '%function%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)


mysql> show variables like '%function%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON    |
+---------------------------------+-------+
 

 

从库已正常同步。

说明:可以在my.cnf中配置,否则重启后参数失效。


参考:

http://blog.sina.com.cn/s/blog_6f68845001013k8a.html

http://www.52youpiao.com/it/post/mysql-error-1418.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上海阿丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值