我有一个名为 yourFirstDatabase 的数据库,只有几个表。我想将其克隆到另一个数据库 yourSecondDatabase 以及整个数据。
现在我有以下代码:
exec('mysqldump --user=root --password=root --host=localhost yourFirstDatabase > /var/www/dileep/jiteen/poc/shellPhp/file.sql');
这会创建 yourFirstDatabase 的转储(名为 file.sql )。现在我想将 file.sql 中的数据库元素提取到 yourSecondDatabase 中 为此,我使用了类似的代码:
exec('mysqldump --user=root --password=root --host=localhost yourSecondDatabase < /var/www/dileep/jiteen/poc/shellPhp/file.sql');
但它没有正常工作,并且 yourSecondDatabase 中没有导入任何数据。
但是,如果我手动从 file.sql 导入数据,则数据导入完全正常。这意味着MySQL转储(第一个代码)很好,但第二个代码(获取数据)存在一些问题。
PS:它没有显示任何错误。我从类似的问题中获得了这些代码FROM HERE 任何形式的帮助或建议都表示赞赏。
答案 0 :(得分:1)
使用命令mysql
代替mysqldump
。后者仅用于生产垃圾场,而不是进口垃圾场。
exec('mysql --user=root --password=root --host=localhost --database=yourSecondDatabase < /var/www/dileep/jiteen/poc/shellPhp/file.sql');
答案 1 :(得分:0)
这是我想出的使用PHP和MySQLi复制数据库的方法:
// Database variables
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '1234';
$DB_SRC = 'existing_db';
$DB_DST = 'newly_created_db';
// MYSQL Connect
$mysqli = new mysqli( $DB_HOST, $DB_USER, $DB_PASS ) or die( $mysqli->error );
// Create destination database
$mysqli->query( "CREATE DATABASE $DB_DST" ) or die( $mysqli->error );
// Iterate through tables of source database
$tables = $mysqli->query( "SHOW TABLES FROM $DB_SRC" ) or die( $mysqli->error );
while( $table = $tables->fetch_array() ): $TABLE = $table[0];
// Copy table and contents in destination database
$mysqli->query( "CREATE TABLE $DB_DST.$TABLE LIKE $DB_SRC.$TABLE" ) or die( $mysqli->error );
$mysqli->query( "INSERT INTO $DB_DST.$TABLE SELECT * FROM $DB_SRC.$TABLE" ) or die( $mysqli->error );
endwhile;