我想做的就是从 phpmyadmin 创建的转储中创建一个新数据库。 此转储位于:/var/www/iadmin/wikifresh/db/template.sql 并且永远不会改变。
我运行了一次这个命令,数据库就创建好了
mysql test < /var/www/iadmin/wikifresh/db/template.sql
它创建了数据库。所以,我将该脚本放在 php exec 命令中: (注意:$wikiname 是正在创建的新 wiki 的名称)
$dbwikiname = escapeshellarg($wikiname);
exec("mysql $dbwikiname < /var/www/iadmin/wikifresh/db/template.sql");
现在,当这个脚本运行时,我得到:
ERROR 1049 (42000): Unknown database 'test'
即使我尝试从命令行运行它,我也会遇到这个问题。
我做错了什么?
最佳答案
要使用默认数据库名称调用 mysql
,该数据库必须存在。
某些 MySQL 发行版恰好附带了一个名为 test
的数据库,这解释了为什么您的命令首先成功。有人假设您已经删除了该数据库?在尝试选择它之前,您需要重新创建它:
CREATE DATABASE IF NOT EXISTS test;
当然,您也可以将上述命令放在 USE test;
上,放在 template.sql
文件上,然后调用 mysql
无需指定默认数据库。
关于php - 使用 php exec 从导出的 sql 创建 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346960/