MySQL用变量值更改数据库

bio*_*ark 6 mysql database deployment connection

我正在设置一个变量,然后我想使用该USE命令来更改数据库.不幸的是USE,不评估变量.

SET @con="testDB";
Query OK, 0 rows affected (0.00 sec)
select @con;
+--------+
| @con   |
+--------+
| testDB |
+--------+
1 row in set (0.00 sec)
use @con;
ERROR 1049 (42000): Unknown database '@con'
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试连接时,不会评估变量的值.有任何想法吗?

bio*_*ark 8

我找到了自己的解决方案,所以我会回答我自己的问题,万一有人感兴趣.

@outis你是对的,不可能在命令中使用变量USE.

但是,由于我想在运行时指定的数据库中创建一个表,我的解决方案是使用动态SQL:

set @schema="testDB";
set @front="CREATE TABLE IF NOT EXISTS ";
set @endpart=".`TEST1` (DIM_ID INT(16)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;";
set @stat=concat(@front,@schema,@endpart);
prepare command from @stat;
execute command;
Run Code Online (Sandbox Code Playgroud)

所以基本上这个解决方案构建语句,准备并执行它.@schema参数甚至可以过去到脚本.这样我动态构建了create语句.