1

我要做的就是从 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'

即使我尝试从命令行运行它,我也会遇到这个问题。

我究竟做错了什么?

4

2 回答 2

1

似乎您没有在该机器的 MySQL 服务器中创建数据库“test”,并且 template.sql 没有“CREATE DATABASE”命令。因此,您必须先创建它,或者将“CREATE DATABASE”添加到 template.sql

于 2012-11-12T16:01:36.490 回答
1

mysql使用默认数据库名称调用,该数据库必须存在。

一些 MySQL 发行版恰好附带了一个名为 的数据库test,这解释了为什么您的命令一开始就成功了。有人假设您已经删除了该数据库?在尝试选择它之前,您需要重新创建它:

CREATE DATABASE IF NOT EXISTS test;

当然,您可以将上述命令USE test;放在template.sql文件顶部,然后在mysql不指定默认数据库的情况下调用。

于 2012-11-12T16:02:01.377 回答