2016-11-04 888 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