我正在编写一个SQL脚本来自动创建新数据库及其表。目前的脚本如下......
-- Create a database with the defined name
SET @query = CONCAT("CREATE DATABASE ", @database);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Create a user with all privileges to the new database
SET @query = CONCAT("GRANT ALL PRIVILEGES ON ", @database, ".* TO '", @username, "'@'localhost' IDENTIFIED BY '", @password, "'");
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Use the new database
SET @query = CONCAT("USE ", @database);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
最终语句将允许我的其余脚本成为“正常”SQL而不是准备好,因为我可以使用table
代替database.table
。
不幸的是,脚本报告
错误1295(HY000)第34行:准备好的声明协议中不支持此命令
还有另一种方法可以实现USE
的效果吗?我知道我可以使用准备好的数据库的SQL转储,但它有两个缺点: