为什么只插入一行到mysql table?

Why only one row is inserted into mysql table?

这是完整的查询:

INSERT IGNORE INTO db2.story (created, title, body) 
SELECT  
FROM_UNIXTIME(n.created),
n.title,  
b.body_value
FROM db1.node  n, db1.body_field b
WHERE n.nid= b.id  and n.type IN ('story');

查询的 select 部分 returns 完整结果,但整个查询仅插入第一行。

此查询有什么问题以及如何解决?

更新:这是 db2.story 的结构:

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | NO   |     | NULL    |                |
| body     | longtext     | NO   |     | NULL    |                |
| teaser   | longtext     | NO   |     | NULL    |                |
| created  | datetime     | NO   |     | NULL    |                |
| visits   | int(11)      | NO   |     | NULL    |                |
| slug     | varchar(100) | NO   | UNI | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

这里的问题是字段 slug 存在的唯一键。因为您没有将 slug 设置为插入语句中的任何内容,所以对于插入到 table 中的每一行都设置相同。由于该值必须是唯一的,因此只有第一次插入有效。有两种可能的方法可以解决此问题:

  1. 移除 slug
  2. 的唯一约束
  3. slug 字段的插入语句添加唯一数据