我正在使用在我的IBM Cloud CF应用程序中为mysql db 组合,但是当前 sql_mode for db do do我不允许我使用语句。
我从研究中了解,我需要更改MySQL数据库的" SQL_Mode"配置选项。这是我知道需要执行的MySQL语句:
mysql>设置全局sql_mode =(选择替换(@@ sql_mode,'halle_full_group_by',''((;
但是,当我使用管理凭据在MySQL客户端上尝试此操作时,它告诉我我需要超级用户权利,因此似乎我需要root登录访问。IBM Cloud仪表板中不提供根登录到DB的凭据,仅一个"管理员"用户详细信息,显然没有此操作的特权。
总而言之,我对IBM Cloud支持的问题是,我需要做些什么来通过查询MySQL数据库的作曲家来启用组?可以通过composer.json或其他方法等配置。
PS。不要在家中尝试 -phpmyadmin-所以我在IBM云中访问了php myadmin访问MySQL DB,因此我在上面的查询中运行了查询,并使DB崩溃并使其无法访问。我必须还原!
----部署详细信息-----------------平台:IBM Cloud(又名Bluemix(产品:为mysql撰写部署详细信息:键入MySQL(5.7.20(
尽管您无法全局更改SQL_Mode(因为它会影响数据库的所有用户(,但您可以按每个会话为基础更改设置。
这是一个简短的例子...
mysql> SELECT name, address, MAX(age) FROM example GROUP BY name;
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY
clause and contains nonaggregated column 'compose.example.address'
which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by
根据SQL92,这不允许。如果我们检查...
mysql> select @@SESSION.sql_mode;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
1 row in set (0.02 sec)
好吧,让我们禁用...
mysql> SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0.02 sec)
mysql> select @@SESSION.sql_mode;
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
1 row in set (0.03 sec)
现在我们可以重试....
mysql> SELECT name, address, MAX(age) FROM example GROUP BY name;
Empty set (0.03 sec)
现在我们可以运行命令。您必须放置...
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
在您要使用这种SQL99-LATER命令的任何会话开始时。