Summary
XMLSitemap を利用していて、XMLSitemapをリビルドした際に、Duplicate entry のエラーが発生する。
id, type が PRIMARY KEY になっているのだが、
type のサイズが足りないために発生しているエラーのようだ。
エラーのサンプル
WP: Duplicate entry '206-taxonomy_ter' for key 'PRIMARY' query: INSERT INTO xmlsitemap (id, type, subtype, loc, language, access, status, status_override, lastmod, priority, priority_override, changefreq, changecount) VALUES (206, 'taxonomy_term', '16', 'taxonomy/term/206', '', 1, 1, 0, 0, 0.5, 0, 0, 0) in /path/to/drupal/site/all/modules/xmlsitemap/xmlsitemap.inc on line 137.
解決方法
type のサイズを変更し、中途半端な値のtypeが入っている可能性があるため、xmlsitemapテーブルを削除。
その後、XMLSitemap をリビルドすれば良い。
mysql> ALTER TABLE xmlsitemap MODIFY type VARCHAR(32);
mysql> DELETE FROM xmlsitemap;
% /path/to/drush --root=/var/www/drupal --uri="http://example.com" xmlsitemap-rebuild
変更前のxmlsitemapテーブルのフィールド
mysql> show fields from xmlsitemap;
+-------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | 0 | |
| type | varchar(12) | NO | PRI | | |
| subtype | varchar(32) | YES | | NULL | |
| loc | varchar(255) | NO | MUL | | |
| language | varchar(12) | NO | MUL | | |
| access | tinyint(4) | NO | MUL | 1 | |
| status | tinyint(4) | NO | | 1 | |
| status_override | tinyint(4) | NO | | 0 | |
| lastmod | int(10) unsigned | NO | | 0 | |
| priority | float | YES | | NULL | |
| priority_override | tinyint(4) | NO | | 0 | |
| changefreq | int(10) unsigned | NO | | 0 | |
| changecount | int(10) unsigned | NO | | 0 | |
+-------------------+------------------+------+-----+---------+-------+
変更後のxmlsitemapテーブルのフィールド
mysql> show fields from xmlsitemap;
+-------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | 0 | |
| type | varchar(32) | NO | PRI | | |
| subtype | varchar(32) | YES | | NULL | |
| loc | varchar(255) | NO | MUL | | |
| language | varchar(12) | NO | MUL | | |
| access | tinyint(4) | NO | MUL | 1 | |
| status | tinyint(4) | NO | | 1 | |
| status_override | tinyint(4) | NO | | 0 | |
| lastmod | int(10) unsigned | NO | | 0 | |
| priority | float | YES | | NULL | |
| priority_override | tinyint(4) | NO | | 0 | |
| changefreq | int(10) unsigned | NO | | 0 | |
| changecount | int(10) unsigned | NO | | 0 | |
+-------------------+------------------+------+-----+---------+-------+
Reference
Duplicate entry with taxonomy term : drupal.orghttp://drupal.org/node/794924
XML sitemap | drupal.org
http://drupal.org/project/xmlsitemap