gpt4 book ai didi

mysql - 将 MySQL 表从一个数据库复制到表结构不同的另一个数据库

转载 作者:行者123 更新时间:2023-11-29 09:41:01 24 4
gpt4 key购买 nike

我想将表的内容从旧数据库 (old_db) 复制到新数据库 (new_db)。 new_db.table1 的结构已设置,但它是空的。

SHOW COLUMNS FROM old_db.table1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | longtext | NO | | NULL | |
| criteria | varchar(30) | NO | | NULL | |
| threshold | smallint(6) | YES | | NULL | |
| parent_id | int(11) | YES | MUL | NULL | |
| code | varchar(50) | NO | UNI | NULL | |
+-----------+-------------+------+-----+---------+----------------+

SHOW COLUMNS FROM new_db.table1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | longtext | NO | | NULL | |
| criteria | varchar(30) | NO | | NULL | |
| threshold | smallint(6) | YES | | NULL | |
| code | varchar(50) | NO | UNI | NULL | |
| parent_id | int(11) | YES | MUL | NULL | |
+-----------+-------------+------+-----+---------+----------------+

当我运行时:

INSERT new_db.table1 SELECT * FROM old_db.table1;

我收到以下错误。

ERROR 1048 (23000): Column 'code' cannot be null

我意识到由于列排序,它尝试将 old_db.parent_id 复制到 new_db.code

我无法删除new_db.table1:

DROP TABLE new_db.table1;

因为它连接到new_db中的另一个表:

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

潜在的解决方案可能是(未尝试过):

SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE new_db.table1 MODIFY code varchar(50) NULL;
INSERT new_db.table1 SELECT * FROM old_db.table1;
UPDATE new_db.table1, old_db.table1
SET new_db.table1.code = old_db.table1.code
SET new_db.table1.parent_id = old_db.table1.parent_id
where new_db.table1.id = old_db.table1.id;
ALTER TABLE new_db.table1 MODIFY code varchar(50) NOT NULL;
SET FOREIGN_KEY_CHECKS=1;

是否有一种方法可以从表结构不同的另一个数据库中的另一个表复制表?

最佳答案

这个怎么样:

INSERT new_db.table1 
SELECT id, title, criteria, threshold, code, parent_id
FROM old_db.table1;

那么 old_db.table1 的输出对于 new_db.table1 具有正确的顺序

关于mysql - 将 MySQL 表从一个数据库复制到表结构不同的另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com