替代准备好的SQL“USE”语句

时间:2017-03-17 20:18:27

标签: php mysql

我正在编写一个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转储,但它有两个缺点:

  1. 它为我的项目添加了另一个文件
  2. 这会使开发期间更改数据库结构变得更加困难

0 个答案:

没有答案