触发云sql第2代

时间:2016-08-30 07:24:47

标签: google-cloud-sql

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

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

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)

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

干杯, 安德烈

3 个答案:

答案 0 :(得分:11)

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

您有两种选择:

答案 1 :(得分:3)

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

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

  2. 选择您的实例并转到修改。 (点击三个点按钮)。

  3. 转到最后一个选项,“Marcas de Cloud SQL”的标志。

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

    log_bin_trust_function_creators -> ON

  5. 我还需要等几分钟才能进入Cloud Shell。 (我没有足够的声誉进入链接,但在google中查看“在云壳中使用mysql客户端”

  6. 2nd Generation Cloud SQL

答案 2 :(得分:0)

我遇到了同样的问题。以下操作怎么样? 1.在Cloud Strage上下载导出的.sql文件2.在CLI上以root身份连接到Cloud SQL 3. import(例如source xxx.sql)它运行良好。