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

时间:2009-10-01 09:25:03

标签: mysql database

MySQL不允许您在if not exists语句中指定create user子句(尽管create tablecreate 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 个答案:

答案 0 :(得分:10)

Denis回答了您的确切问题,但还有其他方法解决您的问题:请参阅我对mysql create user only when the user doesn't exist的回答(其中也有类似存储过程的示例)

答案 1 :(得分:-2)

MySQL仅支持存储过程中的流控制结构。