Instead of hacking mysql settings, wouldn't it be better to fix the query? -- Erik
On Wed, Apr 12, 2017 at 9:56 AM, Wido den Hollander <w...@widodh.nl> wrote: > >> Op 12 april 2017 om 7:23 schreef Koushik Das <koushik....@accelerite.com>: >> >> >> Hi Wido, >> >> Check initDataSource() in TransactionLegacy.java. The connection properties >> are read from db.properties. > > Thanks! After looking into this I found that you can just add this to > db.cloud.url.params > > sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' > > My line now looks like this in db.properties: > > db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' > > Created a issue: https://issues.apache.org/jira/browse/CLOUDSTACK-9871 > > I created a PR to include this into db.properties by default: > https://github.com/apache/cloudstack/pull/2037 > > Wido > >> >> -Koushik >> >> On 11/04/17, 10:27 PM, "Wido den Hollander" <w...@widodh.nl> wrote: >> >> >> > Op 11 april 2017 om 10:51 schreef Rohit Yadav >> <rohit.ya...@shapeblue.com>: >> > >> > >> > Hi Wido, >> > >> > >> > You're right, MySQL 5.7 has by default strict(er) sql mode enabled. To >> make CloudStack work with MySQL 5.7, changing the sql mode makes MySQL 5.7 >> behave like 5.6 with which the mgmt server/usage server should work. >> > >> >> Yes, but a client can do this as well. It doesn't have to be server wide. >> >> Do you know where the MySQL client is initiated by CloudStack? A few >> lines of code there should/might be enough. >> >> Wido >> >> > >> > Regards. >> > >> > ________________________________ >> > From: Wido den Hollander <w...@widodh.nl> >> > Sent: 10 April 2017 20:30:55 >> > To: dev@cloudstack.apache.org >> > Subject: MySQL 5.7 and SQL Mode >> > >> > Hi, >> > >> > While testing with Ubuntu 16.04 and CloudStack 4.10 (from master) I've >> ran into this error on the management server: >> > >> > com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression >> #1 of SELECT list is not in GROUP BY clause and contains nonaggregated >> column 'cloud.i.id' which is not functionally dependent on columns in GROUP >> BY clause; this is incompatible with sql_mode=only_full_group_by >> > at >> sun.reflect.GeneratedConstructorAccessor50.newInstance(Unknown Source) >> > at >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >> > at >> java.lang.reflect.Constructor.newInstance(Constructor.java:423) >> > at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) >> > at com.mysql.jdbc.Util.getInstance(Util.java:387) >> > at >> com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939) >> > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) >> > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) >> > >> > I was able to fix this to add this to my my.cnf: >> > >> > [mysqld] >> > sql_mode = >> "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" >> > >> > Should we maybe set the SQL Mode as a connection parameter when >> connecting to the DB? This prevents users from having to set this manually >> in their MySQL configuration. >> > >> > Did somebody else run into this with MySQL 5.7? >> > >> > Thank you, >> > >> > Wido >> > >> > rohit.ya...@shapeblue.com >> > www.shapeblue.com >> > 53 Chandos Place, Covent Garden, London WC2N 4HSUK >> > @shapeblue >> > >> > >> > >> >> >> >> >> >> DISCLAIMER >> ========== >> This e-mail may contain privileged and confidential information which is the >> property of Accelerite, a Persistent Systems business. It is intended only >> for the use of the individual or entity to which it is addressed. If you are >> not the intended recipient, you are not authorized to read, retain, copy, >> print, distribute or use this message. If you have received this >> communication in error, please notify the sender and delete all copies of >> this message. Accelerite, a Persistent Systems business does not accept any >> liability for virus infected mails.