我试图用第二代云SQL,并想改变SQL模式。在UI,我只能设定的sql_mode从下拉列表中的一个值,而不是他们的倍数(例如,“STRICT_MODE_TRANS,ALLOW_INVALID_DATES”)。什么是完成,最好的办法?
干杯,安德烈斯
这不是由谷歌云SQL支持现在。只能设置一个值。
我知道这个帖子是1岁,但现在我偶然发现了这个时候我有一个的sql_mode问题,当我尝试使用5.7从MySQL 5.5迁移数据库,以谷歌SQL。虽然我知道,我们可以SET GLOBAL sql_mode=''
我们想要的任何有效值,我花了时间放弃,并得出结论,我们不能对谷歌的Cloud SQL设置多个值。
谷歌只允许一个值上的sql_mode标志现在可以设置。如果你的问题涉及到消除ONLY_FULL_GROUP_BY(OP没有提到他为什么要自定义值)使用控制台传统的价值不删除的sql_mode的值的其余部分,或者gcloud sql instances patch <instance_name> --database-flags sql_mode=TRADITIONAL
将从字符串的其余部分删除该值。
MySQL的5.7.4之前,以及在MySQL 5.7.8或更高版本,传统相当于STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER和NO_ENGINE_SUBSTITUTION。
我就只加这作为注释以上,但我不能因为缺少点又增加一个。
另一种可能的解决方案是设置的sql_mode到HIGH_NOT_PRECEDENCE
一旦云SQL设置的sql_mode字符串将成为:
HIGH_NOT_PRECEDENCE
所有其它标志被删除!
我是从一个旧的项目来得那么这种解决方案可能不适用于所有工作,但似乎为我们很好地工作,再加上它的东西,可以迅速进行审判。