我正在尝试使用当前在第一代云SQL上运行的数据库转储来填充第二代云sql实例(v5.7).它有一些触发器:
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `resourcetypetransaction_AFTER_INSERT` AFTER INSERT ON `resourcetypetransaction` FOR EACH ROW
BEGIN
INSERT INTO `resourcetypetransactionlog` SELECT *
FROM `resourcetypetransaction`
WHERE id = NEW.id;
END */;;
Run Code Online (Sandbox Code Playgroud)
尝试将数据库插入第二代时的结果是:
shinkansen:sql ameyer$ cat gae_2016-08-30T08\:21\:33.sql | mysql -u root -pxxxx -h xxxx napoleon;
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1419 (HY000) at line 1067: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Run Code Online (Sandbox Code Playgroud)
有没有办法在第二代上启用这样的触发器?
干杯,安德烈斯
Vad*_*dim 11
由于某些触发器在启用复制时会产生不一致的结果,因此默认配置中不允许使用它们.
您有两种选择:
如果您不关心复制或能够进行即时恢复,则可以禁用二进制日志.
否则,如果您确定触发器是安全的,则可以编辑实例并将log_bin_trust_function_creators标志设置为true advanced options.为了安全起见,触发器必须保证它将对主服务器和副本服务器产生相同的效果.您可以在以下帖子中找到解释和不安全触发器的示例:https://dba.stackexchange.com/questions/73447/why-when-does-creating-a-mysql-trigger-require-super-privileges
我遇到了同样的问题,在阅读了所有论坛之后,解决方案是从Google Cloud SQL而不是控制台在控制面板中设置变量。
在“实例”页面中输入:实例
选择您的实例并进行编辑。(单击三个点按钮)。
转到最后一个选项“ Marcas de Cloud SQL的标志”。
将变量置于ON状态。
log_bin_trust_function_creators -> ON
我还必须等待几分钟,然后进入Cloud Shell。(我没有足够的声誉来输入链接,但是在Google中寻找“在Cloud Shell中使用mysql客户端”
| 归档时间: |
|
| 查看次数: |
4270 次 |
| 最近记录: |