2016-11-04 8 views
3

目的: - json_extractが存在しません。エラーです。MySQLエラーコード:1305.機能JSON_EXTRACTがMySQLクライアントのバージョンに存在しません: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_idを抽出しようとしているとをlatest_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 - 私はそのがでサポート検索あたりとしての機能のdatabaseName.json_extractが

存在しない>だけのMySQL 5.7バージョン。

MySQLクライアントバージョンでjson_extractと同じような仕事をする関数はありますか?5.5.52?

+0

json_decodeを試しましたか? – e4c5

+0

あなたの迅速な対応に感謝します!残念ながらあなたは私が5.7.16にアップデートするサーバーバージョンを持っていることを示唆しています&私はトリガを使用してmysqlを使ってこのようなものを並べ替える必要がありますので最終的に更新されたmysqlサーババージョン:5.7.16でjson_extract関数で動作します。 –

+0

確かに! +1して受け入れる!ありがとうございました! :) –

答えて

4

mysqlクライアントのバージョンは関係ありません。機能はmysqlサーバに存在します(またはあなたのケースでは存在しません)。したがって、関連する唯一のものはmysqlサーバのバージョンです。この機能はmysqlサーバ5.7以降でのみ利用可能です。クライアントをアップグレードしても問題は解決しない場合は、サーバーをアップグレードする必要があります。

回避策はありますか?はい。 PHPのjson_decode

これは、クエリにWHERE句がないために機能します。あなたはテーブル全体を見ている。したがって、すべてのデータとjson_decodeを簡単にフェッチしてから、PHPコードで処理することができます。あなたが多くのデータを持っているなら、これは非常に遅くなるでしょう。

+0

ありがとう@ e4c5それは提案として動作します! –

+1

助けてくれるとうれしいです。あなたのプロジェクトに最適なすべての – e4c5

関連する問題