首页 > 解决方案 > MySQL将表复制到具有相同凭据的不同数据库

问题描述

我正在使用 PHP 内置的标准 MySQL 函数将一个表复制到一个新表。当表在同一个数据库中时,这非常有效。但我想用相同的用户名和密码将它复制到另一个数据库名。

任何建议如何实现这一目标?(因为$database只能包含 1 个数据库名称)

显示的错误是Table 'torzahttp_rsw.torzahttp_rsw.kwaliteit' doesn't exist torzahttp_rsw数据库名称和kwaliteit表名称。为什么数据库名称被使用了两次?

// Create a new MySQL database connection
if (!$con = new mysqli('localhost', $username, $password, $database)) {
    die('An error occurred while connecting to the MySQL server!<br><br>' . $con->connect_error);
}

// Create an array of MySQL queries to run
$sql = array(
    'DROP TABLE IF EXISTS `backup_db.backup_table`;',
    'CREATE TABLE `backup_db.backup_table` SELECT * FROM `live_db.live_table`'
);

// Run the MySQL queries
if (sizeof($sql) > 0) {
    foreach ($sql as $query) {
        if (!$con->query($query)) {
            die('A MySQL error has occurred!<br><br>' . $con->error);
        }
    }
}

$con->close();

标签: phpmysql

解决方案


MySQL 手册

如果多部分名称的任何组成部分需要引用,请单独引用它们而不是引用整个名称。例如,写`my-table`.`my-column`,不是`my-table.my-column`

你的代码:

$sql = array(
    'DROP TABLE IF EXISTS `backup_db.backup_table`;',
    'CREATE TABLE `backup_db.backup_table` SELECT * FROM `live_db.live_table`'
);

应该是这样的:

$sql = array(
    'DROP TABLE IF EXISTS `backup_db`.`backup_table`;',
    'CREATE TABLE `backup_db`.`backup_table` SELECT * FROM `live_db`.`live_table`'
);

或者,完全放弃反引号。


推荐阅读