MySQL根据模板数据库创建数据库

时间:2016-03-14 01:32:36

标签: php mysql database postgresql

我正在编写一个PHP应用程序,需要在添加数据时创建新数据库。我想要一个简单明了的方法来指定创建的数据库应该是什么样的(即它们包含哪些表,这些表应该包含哪些索引,......)这是当前MySql Workbench中的EER图,然后我将其转发到服务器。我不认为PHP代码中有很多CREATE语句,而且很简单"。由PHP应用程序中的某些事件触发,我需要做一些事情,创建一个具有指定名称的新数据库,该数据库是模板数据库的副本。

这是这个问题的重复:
MySQL copy/duplicate database
但是这个问题的答案不适合我 我不想使用mysqldump,因为我不能承担在服务器上执行shell代码的安全风险,因为必须插入创建的数据库的名称,这可能容易受到代码注入的影响。还this
我也不想用SHOW语句分开数据库并手动执行CREATE语句来拼接一个新的数据库,因为它变得很麻烦,它可能无法捕获模板数据库的所有方面,因此引入了很难找到的bug 。我也不确定在引用表之前创建引用表时此方法处理外键的效果如何。

理想情况下,我想使用像public class Main { public static void main(String args[]){ Integer[][] matches = {{2,2},{3,2},{4,1},{1,3},{3,5},{1,1},{1,0},{0,0},{1,2},{0,2},{0,3},{3,3},{1,0}}; System.out.println(results(matches)); } public static String results(Integer[][] matches){ Integer percentWin = 0; Integer percentLoss = 0; Integer percentTie = 0; Integer amountOfMatches = 13; for (int i = 0; i<amountOfMatches; i++){ Integer nrMatch = i; Integer[] match_result; } return "Wins: " + percentWin + " Losses: " + percentLoss + " Ties: " + percentTie; } 这样的简单SQL语句(其中?表示某种形式的预准备语句中的数据库名称)。不幸的是,虽然MySQL似乎不存在这种功能。
显然PostgreSQL可以做这样的事情,但我不想仅仅因为一个功能而迁移。

如何在履行上述限制条件下实现这一目标?

1 个答案:

答案 0 :(得分:0)

如果您的项目是新项目,通过正确管理迁移,您可以将表格模式的哪个部分分开,这是表格的数据。复制数据库只是重新运行迁移。

如果您的项目已存在。您可以创建sql文件,并编写php脚本以手动运行它。