我尝试构建一个返回json的函数。
我将mysql工作台更新为8.0.14,并尝试了以下代码:
SELECT JSON_OBJECT(
'name_field', name_field,
'address_field', address_field,
'contact_age', contact_age
)
FROM contact;
但是出现以下错误:
错误代码:1305。FUNCTION datalog.json_object不存在
我认为json_object是标准的mysql函数,不是吗?
请参阅此处: JSON Object
答案 0 :(得分:1)
您使用的是MariaDB,而不是MySQL,您的版本(MariaDB 10.1)与MySQL 5.7大致相当,但有一些重要区别。您的Workbench版本无关紧要-重要的是 server 版本。
https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/
MariaDB 10.1及更高版本不支持MySQL 5.7的打包JSON对象。 MariaDB遵循SQL标准,并将JSON存储为普通的TEXT / BLOB。如果要将JSON列从MySQL复制到MariaDB,则应将JSON对象存储在MySQL中的TEXT列中,或使用基于语句的复制。如果您正在使用JSON列并想要升级到MariaDB,则可以将JSON列转换为TEXT,也可以使用mysqldump将这些表复制到MariaDB。在MySQL中,根据json值比较JSON。在MariaDB中,JSON字符串是普通字符串,并作为字符串进行比较。
MariaDB 10.2.3添加了JSON_OBJECT支持。 https://mariadb.com/kb/en/library/json_object/