我有两个mysql数据库,我想保持同步。当我跑的时候
show create trigger tr_del_EmailHash;
从本地网页的mysqli连接中,我从每个数据库得到的输出略有不同,其中一个数据库以单引号返回触发器名称,如下所示:
CREATE trigger `tr_del_EmailHash` before DELETE
...
另一个返回触发器名称,不带引号,如下所示:
CREATE trigger tr_del_EmailHash before DELETE
...
因为我试图将这些存储在源代码管理中,并且能够跨平台区分模式,所以这种差异是非常不可取的。mysqld.cnf文件和mysql服务器变量在每台服务器上都是相同的,所以我不知道在哪里可以找到控制触发器名称是否被“show create trigger”查询引用的方法。谁能提供一些有用的建议,我应该在哪里寻找或在哪里可以调整?
1条答案
按热度按时间c6ubokkw1#
引用行为
show create
-语句由sql_quote_show_create
配置设置:如果启用(默认设置),服务器将为show create table和show create database语句引用标识符。如果禁用,则禁用报价。此选项在默认情况下处于启用状态,以便复制适用于需要引用的标识符。
特别是对于触发器,不幸的是,这只适用于mysql 8,并且只适用于触发器和表名,而不是触发器主体。早期版本会引用您输入的名称(这可能在您的控制下,尤其是涉及身体)。但是如果混合使用mysql 8和早期版本(有些版本修改代码,有些版本不修改代码),这可能会带来麻烦,因此您可能需要决定一个一致的命名模式,并相应地调整该设置。