2016-11-04 2 views
3

Ziel: - json_extract existiert nicht Fehler.MySQL-Fehlercode: 1305. FUNKTION JSON_EXTRACT existiert nicht in der MySQL-Clientversion: 5.5.52

Ich habe Nachricht Körper wie folgt.

< 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 > 

Ich versuche opponent_xmpp_id undlatest_message_id zu extrahieren.

dafür habe ich eine Abfrage wie folgt geschrieben.

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 

verursacht Fehler

1305 - FUNKTIONS databaseName.json_extract nicht

existiert Per i seine> nur MYSQL 5.7 Version unterstützt in gesucht.

Gibt es also eine Funktion, die den ähnlichen Job wie json_extract in MySQL-Client-Version: 5.5.52?

+0

haben Sie versucht, json_decode? – e4c5

+0

Danke für Ihre schnelle Antwort! aber leider, wie Sie vorgeschlagen haben, ich hatte update Server-Version zu 5.7.16 & ich muss es mit mysql nur mit Trigger zu lösen, so dass es schließlich funktioniert mit json_extract Funktion mit aktualisierten mysql Server-Version: 5.7.16. –

+0

ja sicher! +1 und akzeptiert! Vielen Dank für Ihre Hilfe! :) –

Antwort

4

Die Version von MySQL-Client ist nicht relevant. Die Funktionalität existiert (oder in Ihrem Fall existiert nicht) auf dem MySQL-Server. Das einzige, was relevant ist, ist die mysql Server Version. Und diese Funktionalität ist nur in mysql Server 5.7 verfügbar. Durch die Aktualisierung Ihres Clients wird das Problem nicht gelöst. Sie müssen Ihren Server aktualisieren.

Gibt es eine Arbeit? Ja. PHP json_decode

Dies kann funktionieren, da Ihre Abfrage keine WHERE-Klausel hat. Sie betrachten den gesamten Tisch. So können Sie einfach alle diese Daten und json_decode holen und dann die Verarbeitung in Ihrem PHP-Code durchführen. Das wird sehr langsam, wenn Sie viele Daten haben.

+0

Danke @ e4c5 es funktioniert wie vorgeschlagen! –

+1

froh, geholfen zu haben. Alles Gute für dein Projekt – e4c5

Verwandte Themen