触发云sql 2代

Triggers cloud sql 2nd generation

我正在尝试在第一代云 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 */;;

尝试将数据库插入到第 2 代时的结果是:

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)

有没有办法在第二代启用这样的触发器?

干杯, 安德烈斯

由于某些触发器在启用复制时会产生不一致的结果,因此默认配置中不允许使用它们。

您有两个选择:

  • 如果您不关心复制或能够进行时间点恢复,您可以禁用二进制日志。

  • 否则,如果您确定您的触发器是安全的,您可以编辑您的实例并在 advanced options 下将 log_bin_trust_function_creators 标志设置为 true。为了安全起见,触发器必须保证它会在主服务器和副本服务器上产生相同的效果。您可以在以下 post 中找到不安全触发器的解释和示例:https://dba.stackexchange.com/questions/73447/why-when-does-creating-a-mysql-trigger-require-super-privileges

我遇到了同样的问题。下面的操作怎么样? 1. 将 Cloud Strage 2.connect 上导出的 .sql 文件下载到 CLI 上的 Cloud SQL root 3. 导入(例如 source xxx.sql)效果很好。

我 运行 遇到了同样的问题,在我阅读了所有论坛之后,解决方案是在 Google 云 SQL 的控制面板而不是控制台中设置变量.

  1. 在实例页面中输入:Instances

  2. Select 您的实例并进行编辑。 (点击三点按钮)。

  3. 转到最后一个选项,Flags of "Marcas de Cloud SQL"。

  4. 将您的变量置于 ON 状态。

    log_bin_trust_function_creators -> ON

  5. 我还必须等待几分钟才能进入云端 Shell。 (我没有足够的声望进入 link 但在 google 中查找 "Using the mysql client in the Cloud Shell"

2nd Generation Cloud SQL