2009-10-01 53 views
5

MySQL không cho phép bạn chỉ định mệnh đề if not exists trong tuyên bố create user (mặc dù thực tế là create tablecreate procedure hỗ trợ điều này). Có một yêu cầu tính năng cho điều này trong năm 2005 nhưng các nhà phát triển MySQL đã làm cỏ tất cả về nó, vì vậy nó có lẽ sẽ không xảy ra bất cứ lúc nào sớm:Lỗi cú pháp với mô phỏng "tạo người dùng nếu không tồn tại"

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

Tôi đang cố gắng để bắt chước chức năng này như sau tuyên bố:

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; 

nhưng MySQL phàn nàn về cú pháp trong báo cáo if - tôi không thể nhìn thấy bất cứ điều gì sai với nó, hy vọng ai đó có thể chỉ ra những gì vấn đề là.

Cảm ơn!

Trả lời

-3

MySQL chỉ hỗ trợ cấu trúc điều khiển luồng trong các quy trình được lưu trữ.

+1

... và nó không có các thủ tục lưu trữ hệ thống để thêm/xóa người dùng và bạn không thể 'chuẩn bị' câu lệnh' create user' vì nó không được hỗ trợ. Một lý do khác để "yêu" MySQL tôi đoán. –

+0

Bạn đã nói với anh ta một cái gì đó về cơ bản anh ta đã biết, thay vì giúp sửa chữa vấn đề của mình ... – Cerin

10

Denis đã trả lời câu hỏi chính xác của bạn, nhưng có những cách khác xung quanh vấn đề của bạn: xem câu trả lời của tôi để mysql create user only when the user doesn't exist (nơi đó cũng là một ví dụ về một thủ tục lưu trữ tương tự cũng)

Các vấn đề liên quan