Синтаксическая ошибка с эмуляцией "создать пользователя, если не существует" - PullRequest
4 голосов
/ 01 октября 2009

MySQL не позволяет указывать предложение if not exists в операторе create user (несмотря на тот факт, что create table и create procedure поддерживают это). В 2005 году был запрос на добавление функции, но разработчики MySQL сделали все возможное, так что, вероятно, это не произойдет в ближайшее время:

http://bugs.mysql.com/bug.php?id=15287

Я пытаюсь эмулировать эту функцию следующим выражением:

if (select ifnull((select 1
                     from mysql.user
                    where User = 'recuser'
                      and Host = '%'), 0) = 0) then
  create user 'recuser'@'%' identified by password 'blah';
end if;

, но MySQL жалуется на синтаксис в выражении if - я не вижу в этом ничего плохого, надеюсь, кто-то еще может указать, в чем проблема.

Спасибо!

Ответы [ 2 ]

10 голосов
/ 24 марта 2011

Денис ответил на ваш точный вопрос, но есть и другие способы решения вашей проблемы: см. Мой ответ на mysql создать пользователя только тогда, когда пользователь не существует (где также есть пример аналогичного хранимого процедура тоже)

0 голосов
/ 01 октября 2009

MySQL поддерживает конструкции управления потоком только внутри хранимых процедур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...