2012-03-07 30 views
1

我正在寻找从一个WordPress站点追加评论表到另一个。用户是不同的。当我将网站B的评论导入到A时,我遇到了重复密钥问题; comment_id已被采纳。解决在mysql导入重复的主键

那么我该如何解决这个问题,并附上一个简单的.sql文件的表?我是否需要获取用户信息,生成新用户,检查B站点上的注释,抽取内容和postID,然后返回站点A并为新创建的用户重新创建注释!?

真是头疼!谢谢。

回答

0

如果你唯一的问题是重复的关键问题,去你的SQL文件结束后 ENGINE=MyISAM 并使其 ENGINE=MyISAM AutoIncrement=a nubmer above the last id in the new database

或最后一个ID

查询数据库中的再添加一个并在新插入查询中使用它。

例1:

CREATE TABLE IF NOT EXISTS `movies` (
    `id` int(255) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    `year` int(4) NOT NULL, 
    `size` varchar(255) NOT NULL, 
    `added` date NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `title` (`title`,`year`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 

的刀片从我的转储:

INSERT INTO `movies` (`title`, `year`, `size`, `added`) VALUES 
('[REC] 2', 0, '716688', '2011-09-23'), 
('5 Days of War', 0, '1435406', '2012-01-09'), 
('[REC]', 0, '1353420800', '2011-11-06'); 

查看如何我不包括在我的包括PRIMARY KEY (id),但它仍然会核对我UNIQUE KEY,看看标题存在。只是一个小小的演示,希望有所帮助。如果您的表已经存在于新数据库中,那么只需跳到插入内容并且不包含主键,并且它会在新插入时自动设置为下一个可用值。

+0

因此,通过第一种方法,比如旧数据库以主键5结束,并且您说ENGINE = MyISAM AutoIncrement = 6,新数据库中的其余条目将以6,7,8等方式导入? – AlxVallejo 2012-03-08 15:52:09

+0

正确的,当你设置自动增量,它从指定的数字开始,其中,如果你没有包含它,它会自动从1开始,并向前移动,那是什么原因导致你的错误,如果你想从转储更新。只是不包括在转储的插入primary_key,它应该像一个魅力。我将编辑并从我的一个数据库发布演示。 – rackemup420 2012-03-09 14:05:01