如何在codeigniter中禁用ONLY_FULL_GROUP_BY?

rryofs0p  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(123)

我曾在mysql中使用过Group By,但最近我收到了一个Group By的问题。我从许多网站搜索,我得到的问题是由于升级mysql版本,在旧版本中它是启用的,而在旧版本中它是禁用的。
我不会使用查询删除它,但从代码。我也不想从我的.cnf删除,因为当网站将生活它会再次发生。
所以请给我一个至少在Codeigniter中有效的解决方案。我将感谢你:-)
我试着在下面查询:

mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

但当服务器重新启动时,问题再次出现。

zour9fqk

zour9fqk1#

Codeigniter在application/config/database.php中有stricton选项:

$db['default'] = array(
    ...
    'stricton' => FALSE, // forces 'Strict Mode' connections
    ...
);

或者,您可以像这样停用sql_mode参数:

$this->db->query('SET SESSION sql_mode = ""');

// ONLY_FULL_GROUP_BY
$this->db->query('SET SESSION sql_mode =
                  REPLACE(REPLACE(REPLACE(
                  @@sql_mode,
                  "ONLY_FULL_GROUP_BY,", ""),
                  ",ONLY_FULL_GROUP_BY", ""),
                  "ONLY_FULL_GROUP_BY", "")');
rfbsl7qr

rfbsl7qr2#

您可以在My_controller或任何Controller的构造函数中运行sql查询。

$sql = "SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));";
    $this->db->query($sql );

这样就能解决问题。

相关问题