首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL5.7迁移到MariaDb 10.6.5后出错

从MySQL5.7迁移到MariaDb 10.6.5后出错
EN

Stack Overflow用户
提问于 2022-11-19 01:48:48
回答 1查看 52关注 0票数 1

我使用PHP-MySQLi-Database-Class来构造查询,它在MySQL上运行良好,但是在切换到MariaDB数据库之后,一个特定的查询抛出了这个错误:(对不起,长文本)

*非常规异常:您的SQL语法出现了错误;请检查与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在属性为_sub_attr JSON_EXTRACT(sub_prop_attr.attrib_te.在第1行查询: SELECT,p.id AS id,DATEDIFF(CURDATE(),DATE(p.created))作为天数,合并(bed_room,bath_room,停车场,construction_size,lot_size,WHERE,building_age)作为chs,(选择JSON_OBJECTAGG(attribute_name ),(选择CAST(CONCAT('',p.created‘)作为JSON)从属性_sub_attr JSON_EXTRACT(sub_prop_attr.attrib_terms,( JSON_UNQUOTE(JSON_SEARCH(sub_prop_attr.attrib_terms,'one',_sub_attr.id)(从prop_attributes作为sub_prop_attr左连接属性作为sub_attr on sub_prop_attr.attribute_id = sub_attr.id prop_id = p.id)作为JSON_attributes从属性p左联接(选择id、state_name、CONCAT(“en”、state_name)作为state_alias从状态)上的p.state=s.id左联接(选择id,city_na in C:\wamp64...\classes\MysqliDb.php在线1819

...And这是一个查询:

代码语言:javascript
复制
SELECT *,p.id AS id, DATEDIFF(CURDATE(),DATE(p.created)) AS days, 
    COALESCE(bed_room,bath_room,parking,construction_size,lot_size,floors,building_age) AS chs ,
    (SELECT JSON_OBJECTAGG(attribute_name, 
        (SELECT CAST(CONCAT(\'[\',GROUP_CONCAT(JSON_QUOTE(_sub_attr.attribute_name)),\']\') AS JSON) 
        FROM attributes AS _sub_attr 
        WHERE JSON_EXTRACT(sub_prop_attr.attrib_terms, JSON_UNQUOTE(JSON_SEARCH(sub_prop_attr.attrib_terms, \'one\', _sub_attr.id))) IS NOT NULL)) 
    FROM prop_attributes AS sub_prop_attr LEFT JOIN attr';

这是MySQL查询:

代码语言:javascript
复制
$Srelated_attributes = ", (SELECT JSON_OBJECTAGG(attribute_name, (SELECT CAST(CONCAT('[',GROUP_CONCAT(JSON_QUOTE(_sub_attr.attribute_name)),']') AS JSON) FROM attributes AS _sub_attr WHERE JSON_EXTRACT(sub_prop_attr.attrib_terms, JSON_UNQUOTE(JSON_SEARCH(sub_prop_attr.attrib_terms, 'one', _sub_attr.id))) IS NOT NULL)) FROM prop_attributes AS sub_prop_attr LEFT JOIN attributes AS sub_attr ON sub_prop_attr.attribute_id = sub_attr.id WHERE prop_id = p.id) AS JSON_attributes";

最后一个是一个很长的查询的一部分,如果我去掉这个部分,它就能工作了.我认为这可能与引号或JSON函数有关,但我没有找到任何好的解决方案来使相同的代码工作。

你们中有谁有过相关的经历吗?希望我对我的问题描述清楚了。

我希望我可以使用我的查询。另外,我已经尝试删除我在问题描述中引用的部分,错误就消失了,所以问题可能围绕在查询的那个部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-19 03:23:01

因为JSON不是SQL标准中的一个类型,所以MariaDB没有将CAST(... AS JSON)实现为它的非类型

如果删除这些单词,CAST运算符将以相同的方式运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74496986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档