Sin*_*ful 1 php mysql sql mariadb laravel
我有一个连接到 mysql db 的 Laravel 项目,当我更改我的服务器时,我的代码失败了,因为我的新服务器有一个Mariadb,当我检查我的日志时,我意识到,MariaDb 有一些不受支持的功能ANY_VALUE(),
如何根据 MariaDb 编辑我的 sql?
select(DB::raw('SUM(price) as price, SUM(price_now) as price_now,
ANY_VALUE(price_available) as price_available'),'adult_count')
Run Code Online (Sandbox Code Playgroud)
今天,你已经解决了这个问题。但是明天,当您运行相同的查询时,您将收到不同的错误。
在旧版本的 MySQL 或 MariaDB 中,price_available如果不是,您将获得“任何价值” GROUPing BY。这实际上介于“不良做法”和“违反标准”之间。相对最近,MariaDB,然后是后来的 MySQL,切换到“only full group by”。当时,ANY_VALUE()为 MySQL 应运而生,但显然 MariaDB 丢了球。
对于旧版本和新版本都应该安全的旧解决方法是使用MIN(price_available)或其他一些聚合函数。(如果该列可能有NULL,则各种聚合可能会也可能不会NULL以您喜欢的方式处理。)
另请参阅ONLY_FULL_GROUP_BY设置。
Sin*_*ful -2
我已经解决了替换这个:
select(DB::raw('SUM(price) as price, SUM(price_now) as price_now,
ANY_VALUE(price_available) as price_available'),'adult_count')
Run Code Online (Sandbox Code Playgroud)
到
select(DB::raw('SUM(price) as price, SUM(price_now) as price_now,
price_available as price_available'),'adult_count')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3422 次 |
| 最近记录: |