DBをPostgreSQLにしたら

Saving entry failed: ERROR: Cannot insert a duplicate key into unique index mt_trackback_pkey

 なんてエラーが出て、サイトがリビルドされず、カテゴリーが保存されない。手動でリビルドすれば、ちゃんと走るんだけど、カテゴリは空白のまま。参った。戻すか。

<追記>
 うあー、これってどうやら、データをコンバートした際にsequenceに最大値を設定し直していない為、uniqueキーであるmt_trackback_pkeyに、既に存在している値を挿入しようとしているらしい。>参考:PostgreSQLの使い方
 それが証拠に、このEntryと一つ前のEntryのIDが、「1」と「2」になってるし・・・・・・(どうしてEntryIDとかが被っていないのかは、面倒なので説明しまへん)。
 一度Export/Importすれば直るんだろうけど・・・・・・どうしよう。

<解決>
 無理やり(っていうか正当な手段でだけど)直してみた。Telnetでサーバーにログオン、psqlを立ち上げて、以下のスクリプトを流した。

select setval('mt_author_id',(select max(author_id) from mt_author)); select setval('mt_blog_id',(select max(blog_id) from mt_blog)); select setval('mt_category_id',(select max(category_id) from mt_category)); select setval('mt_comment_id',(select max(comment_id) from mt_comment)); select setval('mt_entry_id',(select max(entry_id) from mt_entry)); select setval('mt_ipbanlist_id',(select max(ipbanlist_id) from mt_ipbanlist)); select setval('mt_log_id',(select max(log_id) from mt_log)); select setval('mt_notification_id',(select max(notification_id) from mt_notification)); select setval('mt_permission_id',(select max(permission_id) from mt_permission)); select setval('mt_placement_id',(select max(placement_id) from mt_placement)); select setval('mt_plugindata_id',(select max(plugindata_id) from mt_plugindata)); select setval('mt_template_id',(select max(template_id) from mt_template)); select setval('mt_templatemap_id',(select max(templatemap_id) from mt_templatemap)); select setval('mt_trackback_id',(select max(trackback_id) from mt_trackback)); select setval('mt_tbping_id',(select max(tbping_id) from mt_tbping));

 何をやっているのかといえば、すべてのテーブルのシーケンスに、各テーブルの主キー最大値を設定している。その後で、このEntryと一つ前のEntryを、新規に投稿し直した。これでオッケー、だと思う。(不安)