在Greatsql 8.0.32-25中,执行如下命令报错
命令
set global sql_mode = default; set sql_mode = default; delimiter // CREATE OR REPLACE FUNCTION f1() returns int BEGIN RETURN 10; END; //
报错内容:
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)
总结:
MySQL创建function 必须带deterministic参数,默认不带创建不成功,强制修改参数后可创建成功,但复制时不能保证数据一致。
正常创建命令
set global sql_mode = default; set sql_mode = default; delimiter // CREATE OR REPLACE FUNCTION f1() returns int DETERMINISTIC BEGIN RETURN 10; END; //
非正常创建命令:
set global sql_mode = default; set sql_mode = default; delimiter // CREATE OR REPLACE FUNCTION f1() returns int BEGIN RETURN 10; END; //
必须带的 DETERMINISTIC 参数:
If a stored program that modifies data is nondeterministic, it is not repeatable. This can result in different data on source and replica, or cause restored data to differ from the original data.
执行如下命令,没有deterministic参数也可创建成功,但有数据库不一致的风险.
SET GLOBAL log_bin_trust_function_creators = 1;
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作