模拟"创建用户(如果不存在)"时出现语法错误

Ian*_*emp 4 mysql database

MySQL不允许你if not existscreate 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;
Run Code Online (Sandbox Code Playgroud)

但MySQL抱怨if声明中的语法- 我看不出它有什么问题,希望其他人可以指出问题是什么.

谢谢!

Tim*_*ins 10

Denis回答了你的确切问题,但还有其他方法解决你的问题:只有当用户不存在时才能看到mysql创建用户的答案(其中也有一个类似存储过程的例子)