MySQLでAUTO_INCREMENTの値を初期化する

MySQLでテーブルを作成する際、サロゲートキーとしてidカラムを用意し、データインサート時に自動的に採番を行うようAUTO_INCREMENT属性を設定する場合が良くあると思います。

採番された最新の値は内部で保持されているため、一旦すべてのレコードを削除した場合でも、新しく挿入したレコードのidは1には戻りません。

idの数字自体には意味がありませんので、特にそのままでも問題はないかと思いますが、1にリセットしたい場合は次のクエリを実行します。

ALTER TABLE <TableName> AUTO_INCREMENT=0;

また、Truncateをすると、データの削除と同時にAUTO_INCREMENTの値もリセットされるようです。

TRUNCATE TABLE <TableName>;

MySQLで文字列カラムの一部を置換

運用しているWordPressのサイトのドメインを変更した際に、一部の画像が表示されなくなる問題が発生しました。

それらの画像はImage Pasteというプラグインを利用してクリップボードから投稿に張り付けたものでしたが、どうもドメインを含む絶対パスで画像を指定するため、ドメイン変更後も古いURLのままになっていたことが原因でした。

一つ一つ修正するのは手間がかかるため、データベース上で直接修正できないかと調べたところ、MySQLのREPLACE関数を使うことで、投稿の文字列の一部だけをまとめて変更できることが分かりました。

UPDATE tmpa60d8d_posts SET post_content = REPLACE(post_content, 'old.domain', 'new.domain') WHERE post_content LIKE '%old.domain%'

 

Top