【问题标题】:Join by key of JSON column giving error in MySQL 5.6 but working in MySQL 8.0.19通过 JSON 列的键加入在 MySQL 5.6 中给出错误但在 MySQL 8.0.19 中工作
【发布时间】:2020-12-04 01:31:54
【问题描述】:

我当前的代码是,

$query->leftJoin('templates as t', 't.id', '=', DB::Raw("CAST(revisions.value->'$.template_id' AS UNSIGNED)"));

在这种情况下,值是修订表中的 JSON 列。

它在 MySQL 8.0.19 中完美运行,但抛出错误

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 MySQL 5.6 中的 '>"$.template_id" AS UNSIGNED) left join" 附近使用的正确语法

【问题讨论】:

    标签: php mysql laravel mysql-8.0 mysql-5.6


    【解决方案1】:

    Json 支持仅在 mysql v5.7.8 中添加,因此 v5.6 不支持 json 运算符。列路径运算符 (->) 是 added in v5.7.9。您需要至少迁移到 v5.7.9 才能使此代码在 mysql 中运行。

    【讨论】:

    • 感谢您的回答。但是有没有其他方法可以在 MySQL 5.6 中使用 JSON
    • 只有标准的字符串函数可用,对于处理复杂的json用处不大。
    • 感谢@Shadow 的回复。
    猜你喜欢
    • 2015-06-03
    • 2020-07-26
    • 2012-05-02
    • 2021-04-05
    • 1970-01-01
    • 2016-11-22
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多