php - 使用 php exec 从导出的 sql 创建 mysql 数据库

标签 php mysql sql exec

我想做的就是从 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/

相关文章:

php - 将 php 数组传递给 jquery

php - 分解从数据库中检索到的值并将其显示在 laravel 的 ListView 中

mysql - 将 AVG 与 HAVING 一起使用

mysql - 如何创建数据透视表查询?

SQL - 多个条件 where 子句同一列

php - 对字符串调用成员函数 addEagerConstraints()

php - 通过 PHP 更新 MySQL 中的 "order"列的最有效方法是什么

java - 如何将连接驱动程序添加到我的项目中

mysql - Ruby 事件记录在 mysql 中插入日期时间而不是时间

C# Linq 在 GroupBy 中分配匿名类型