Функция json_object не существует

0

Я пытаюсь построить функцию, которая возвращает JSON.

Я обновил MySQL Workbench до 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
    Обновление приложения Workbench до 8 не означает, что ваш сервер MySQL установлен на 8. Что делает SELECT VERSION(); выход?
  • 0
    Привет Ceejayoz, выберите версию (); дает мне: "10.1.35-MariaDB"
Показать ещё 2 комментария
Теги:

3 ответа

0

Вы используете MariaDB, а не MySQL, и ваша версия (MariaDB 10.1) примерно сопоставима с MySQL 5.7 с некоторыми существенными отличиями. Ваша версия Workbench не имеет значения - важна версия сервера.

https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

MariaDB 10.1 и выше не поддерживает упакованные в JSQL объекты MySQL 5.7. MariaDB следует стандарту SQL и сохраняет JSON как обычный текст/большой двоичный объект. Если вы хотите реплицировать столбцы 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/

  • 0
    Огромное спасибо. Я скачал mariadb, и он работает. Вы мне очень помогли!
0

Попробуйте этот запрос:

SELECT @@version;

Если он показывает версию MySQL менее 5.7.8, значит, ваш MySQL сервер слишком стар для поддержки новых функций JSON.

MySQL Workbench - это клиентское приложение, его версия не обязательно совпадает с версией MySQL Server, к которой он подключается.

-2

Это может быть глупым ответом, но вы проверили, что ваш search_path правильный? У меня была эта ошибка, когда система не знает, в какой схеме искать.

Могли бы попробовать:

SET search_path = youschema;

выше кода, который вы написали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню