我有此sql_mode = only_full_group_by限制,并且由于使用共享主机,我对服务器没有全局权限

时间:2018-09-24 12:50:25

标签: php mysql hosting

  

SELECT * FROM raw_stock WHERE date ='2002-09-23'按令牌分组   按时间

然后我得到了:

SELECT列表不在GROUP BY子句中,并且包含非聚合列'db.table.table_id',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by

不兼容

我在这里看到了答案: https://stackoverflow.com/questions/41887460/select-list-is-not-in-group-by-clause-and-contains-nonaggregated-column-inc/41887524#=

但这就是如果您不在拥有全局权限的共享主机上

该问题可能看起来像重复问题,但并非如此,如果您拥有专用的VPS服务器,则可以禁用ONLY_FULL_GROUP_BY ...但是当您在共享托管上托管应用程序时,情况就不一样了。如果您尝试禁用ONLY_FULL_GROUP_BY,它将告诉您,您没有管理员权限。如果有错,请纠正我

2 个答案:

答案 0 :(得分:0)

您需要按列选择所有列的名称,并将它们也应用在group by子句中,否则,这将导致错误,因为group by仅用于聚合,尽管从您的问题尚不清楚为什么需要group通过查询

SELECT column1,column2, column3,... FROM raw_stock WHERE date='2002-09-23' group by column1,column2, column3,... ORDER BY time

答案 1 :(得分:0)

您可以在运行时更改sql_mode。 这就是它在运行时应该如何工作

// connect to mysql and call the first query
mysqli_query("SET SESSION sql_mode = 'TRADITIONAL'");

OR

mysqli_query($conn, "SET SESSION sql_mode = 'TRADITIONAL'");

如果mysql_query不起作用,请尝试mysqli_query