【发布时间】:2022-01-13 23:21:33
【问题描述】:
我正在尝试将数据从一个数据库复制到另一台服务器上的另一个数据库。数据库在结构上是相同的。通过搜索,我尝试在 Laravel 中使用 insertUsing() 方法。
$new_connection = DB::connection('mysql2');
//Insert Using requires an array of columns
$column_list = Schema::getColumnListing('users');
//This is my select statement
$select = $new_connection->table('users')->select('*');
//This is my insert statement
DB::table('users')->insertUsing($column_list,$select);
这不会产生任何错误,但不会将数据插入表中。 如果我要复制到的数据库中有相同的数据,我会收到一条错误消息,指出主键已经存在,所以我知道它正在从其他服务器读取数据。
还有其他方法可以完成这项工作吗?
【问题讨论】:
-
只使用
insert()有什么问题?我在the documentation 中没有看到任何提及insertUsing()。虽然实际上这可能在命令行上使用mysqldump | mysql管道更好。 -
@miken32 来自源“使用子查询将新记录插入表中。”
-
啊,我没有注意到您没有对旧数据库记录执行
get()。我想您会发现问题在于子查询将无法使用单独的数据库连接。 -
@miken32 我可以进行插入,但不确定如果我要复制完整的数据库该怎么做。