返回顶部

收藏

Mysql还原时遇到This function has none of DETERMINISTIC, NO SQL的解决办法

更多

This function has none of DETERMINISTIC, NO SQL解决办法

创建存储过程时出错信息:

ERROR 1418 (HY000): 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)

原因: 这是我们开启了bin-log, 我们就必须指定我们的函数是否是

  1. DETERMINISTIC 不确定的
  2. NO SQL 没有SQl语句,当然也不会修改数据
  3. READS SQL DATA 只是读取数据,当然也不会修改数据
  4. MODIFIES SQL DATA 要修改数据
  5. CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

解决方法:

mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+
mysql> set global log_bin_trust_function_creators=1;
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON    |
+---------------------------------+-------+

这样添加了参数以后,如果mysqld重启,那个参数又会消失,因此记得在my.cnf配置文件中添加:

log_bin_trust_function_creators=1

标签:mysql,sql,数据库还原

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 雪姬 发表 2016-07-06 01:04:34 2016年6月数据库流行度排行榜 SQLite反超Redis
  2. aquan 发表 2012-04-06 09:51:10 批量替换wordpress文章内容
  3. Salley 发表 2014-08-05 08:51:27 MySQL查询脚本分享_分类前十
  4. 博主 发表 2012-08-24 07:00:00 [转]MySQL数据库性能优化之SQL优化
  5. sulong 发表 2010-07-20 13:50:18 一次sql调优
  6. 谢权 发表 2016-01-27 14:17:35 SQL入门练习(二)
  7. JeffJing 发表 2011-04-19 08:12:51 MySQL常用数据表操作SQL
  8. 小丁 发表 2017-02-18 22:39:44 关于日志级别的一些想法
  9. hanze 发表 2017-07-19 15:10:14 linux shell小脚本分享
  10. 尖兵 发表 2018-03-06 15:45:56 mysql报错ERROR 1093
  11. Pangzi 发表 2015-06-06 16:05:58 MySQL中的那些坑
  12. ITJesse 发表 2014-01-05 20:06:56 将SQL Server中的数据导入MySQL