2016-11-04 896 views
3

目标: - json_extract不存在错误。MySQL错误代码:1305. MySQL客户端版本中不存在FUNCTION JSON_EXTRACT:5.5.52

我确实有这样的消息体。

< message type = "chat" 
    to = "[email protected]" 
    from = "[email protected]/9fs4kgn090" > <body> { 
    "opponent_xmpp_id": "[email protected]", 
    "latest_message_id": "6233" 
    } < /body><active>http://jabber.org/protocol/chatstates < /active></message > 

我试图提取opponent_xmpp_idlatest_message_id

因为我写了如下的查询。

SELECT LEFT(ExtractValue(stanza, "//@from"),LOCATE("@",ExtractValue(stanza, "//@from")) - 1), 
     LEFT(ExtractValue(stanza, "//@to"),LOCATE("@",ExtractValue(stanza, "//@to")) - 1), 
     ExtractValue(stanza, "//body"), 
     ExtractValue(stanza, "//@chattype"), 
     TRIM(BOTH '"' FROM json_extract(ExtractValue(stanza, "//body"), '$.opponent_xmpp_id')) AS opponent_xmpp_id, 
     json_extract(ExtractValue(stanza,"//body"),'$.latest_message_id') AS latest_message_id   
FROM 
ofOffline 

导致错误

1305 - 按我搜索了唯一支持> MYsql的5.7版本功能databaseName.json_extract不存在

那么在MySQL客户端版本中有没有类似json_extract的作用:5.5.52?

+0

你试过json_decode吗? – e4c5

+0

感谢您的及时答复!但不幸的是,你已经建议我已经更新服务器版本到5.7.16&我需要把它与mysql只与使用触发器,所以最终它与json_extract函数与更新后的MySQL服务器版本:5.7.16。 –

+0

是的! +1并被接受!非常感谢您的帮助! :) –

回答

4

mysql客户端的版本不相关。 MySQL服务器中存在功能(或者您的情况不存在)。因此唯一相关的是mysql服务器版本。而且这个功能仅在MySQL服务器5.7以上版本中可用。升级你的客户端不会解决问题,你需要升级你的服务器。

有没有解决方法?是。 PHP的json_decode

这可以工作,因为您的查询没有WHERE子句。你正在看整个桌子。因此,您可以轻松获取所有数据和json_decode,然后在您的PHP代码中进行处理。如果你有大量的数据,这将会非常缓慢。

+0

谢谢@ e4c5它按照建议工作! –

+1

很高兴有帮助。一切顺利为您的项目 – e4c5