MySQL: функция CONCAT_WS работает на локальном компьютере, но не на сервере
Несколько дней назад я задал вопрос о своей проблеме, и мне посоветовали использовать функцию CONCAT_WS. Я использую CONCAT_WS в моей локальной базе данных MySQL, и она работает отлично. Но он не работает на сервере (приложение размещено) и генерирует следующую ошибку.
FUNCTION test.CONCAT_WS не существует
Вот test
в строке ошибки указано имя моей базы данных на сервере.
Мой запрос таков:
SELECT * FROM patient WHERE CONCAT_WS (',', LastName,FirstName,BirthDate ) NOT IN ('Abdul,Quddus,2000-09-30','Wasim,Akram,1993-09-12');
Может кто-нибудь сказать мне проблему или предложить мне другое решение, заданное в связанном вопросе выше?
Спасибо
1 ответ
Самый простой способ исправить это - удалить пробел между именем функции и круглыми скобками, т.е. CONCAT_WS(...)
вместо CONCAT_WS (...)
,
Из руководства MySQL:
По умолчанию не должно быть пробелов между именем функции и круглыми скобками после него. Это помогает анализатору MySQL различать вызовы функций и ссылки на таблицы или столбцы, имена которых совпадают с именами функций.
...
Вы можете указать серверу MySQL принимать пробелы после имен функций, запустив его с параметром --sql-mode=IGNORE_SPACE.
Кроме того, это поведение зависит от версии MySQL, поэтому оно работает на одном сервере и не работает на другом, цитата из справочной страницы " Разбор и разрешение имен функций":
Количество имен функций, затронутых IGNORE_SPACE, было значительно уменьшено в MySQL 5.1.13 с примерно 200 до примерно 30.