Title: シリアライズの値が破損しているDBの修復
Last modified: 2020年1月24日

---

# シリアライズの値が破損しているDBの修復

 *  [gyaku](https://ja.wordpress.org/support/users/gyaku/)
 * (@gyaku)
 * [6年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%ae%e5%80%a4%e3%81%8c%e7%a0%b4%e6%90%8d%e3%81%97%e3%81%a6%e3%81%84%e3%82%8bdb%e3%81%ae%e4%bf%ae%e5%be%a9/)
 * 1度シリアライズの値が破損してしまったDBの修復ができるかどうかお聞きしたいです。
   
   ↓データベースのシリアライズの値はこんな感じで入っているとして、
 * > a:0:{s:21:”1234567890″;}
 * この例だと、**s:21**が、**s:10** になってほしいところです。
    これを修正してくれる
   ものってありますかね？ 手でやるのはさすがに量があるのできついです。 自分で正規
   表現なんかをつかって置換するしかないんでしょうか。
 * 経緯は、だいぶ前に、search replace dbやWP CLIを使ってURLの置換をしてみたのですが、
   
   ちゃんとシリアライズされているものは再度シリアライズしてくれるのですが、 すでに
   破損している値では直してくれないみたいなので 「しかたないか」と思っていました。
   最近になって、これぐらい直せるツールがあってもいいんじゃない？と気づいて、探し
   てみたのですが、私では発見できず。。
 * 正規表現と文字数を数えるくらいなら、そんなに難しくないんじゃないかな、と思った
   のですが、マルチバイトの文字数も対応しないといけなかったりで、自作よりも確実な
   ものがあれば使いたいと思いました。
    ツールを知っている方がいらっしゃれば教えて
   ほしいです。 もしくは、プログラムの一部でも教えていただけたら、PHPならちょっと
   くらい書けるので助かります。 こういう理由で無理だよ、というようなことでも歓迎
   です。

3件の返信を表示中 - 1 - 3件目 (全3件中)

 *  [kimipooh](https://ja.wordpress.org/support/users/kimipooh/)
 * (@kimipooh)
 * [6年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%ae%e5%80%a4%e3%81%8c%e7%a0%b4%e6%90%8d%e3%81%97%e3%81%a6%e3%81%84%e3%82%8bdb%e3%81%ae%e4%bf%ae%e5%be%a9/#post-11662168)
 * すでにシリアライズ値がおかしくなっているデータベースの場合で、それを直すための
   サンプルコードが、
 * [Fix serialized data broken due to editing MySQL database in a text editor?](https://stackoverflow.com/questions/15138893/fix-serialized-data-broken-due-to-editing-mysql-database-in-a-text-editor/17048075)(
   Stackoverflow)
 * にいくつか載っています。
    また使ったことがないですが [WordPress Fix Serialization](https://github.com/wsizoo/wordpress-fix-serialization)(
   GitHUB) に一括修正処理してくれるツールがありますね。
 * データベースをバックアップして、ローカル環境やクローンサイト、あるいはDBのみコピー
   して、それら仮想環境で置換を試してみてはと思います。
 *  [kimipooh](https://ja.wordpress.org/support/users/kimipooh/)
 * (@kimipooh)
 * [6年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%ae%e5%80%a4%e3%81%8c%e7%a0%b4%e6%90%8d%e3%81%97%e3%81%a6%e3%81%84%e3%82%8bdb%e3%81%ae%e4%bf%ae%e5%be%a9/#post-11662221)
 * これに対する質問者さんからの返事について、メール通知が来ていて、しかしフォーラム
   に掲載されていないのはURLがついていたからですかね。
 * さて、fix-serialization.php　というのがあり、 PHP5.3でしか動作しない（PHP7では
   動作しない）ものがあるということです。
 * その PHPがおいてある GitHubの Pull requests に、 PHP7 Fixes のパッチが置いてあり
   ます。こちらに、preg_replace において e修飾子を使わないで、preg_replace_callback
   を使ったコードがあります。そういったものをつかうのも手かもしれませんね。
 *  トピック投稿者 [gyaku](https://ja.wordpress.org/support/users/gyaku/)
 * (@gyaku)
 * [6年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%ae%e5%80%a4%e3%81%8c%e7%a0%b4%e6%90%8d%e3%81%97%e3%81%a6%e3%81%84%e3%82%8bdb%e3%81%ae%e4%bf%ae%e5%be%a9/#post-11662223)
 * 前のコメントはモデレーターの承認待ちとなってしまいました。1回投稿したんですが、
   ボールドとかつけてわかりやすくしたところ、そんなことになってしまったというわけ
   です。
 * おお！たしかにありました。これがパッチですね。
    [https://github.com/Blogestudio/Fix-Serialization/pull/6/commits/ff0bf055e03d9edd928714f21e303ebc117288e2](https://github.com/Blogestudio/Fix-Serialization/pull/6/commits/ff0bf055e03d9edd928714f21e303ebc117288e2)
 * こっちを正しいコードとして使えってことですね。
 * > `$data = preg_replace_callback('!s:(\d+):([\\\\]?"[\\\\]?"|[\\\\]?"((.*?)[^\\\\])[\\\\]?");!',`
 * わざわざPHP5.3入れたりしなくてもよかったとは…
 * 今後も使う場面あると思いますので助かりました。ありがとうございます！

3件の返信を表示中 - 1 - 3件目 (全3件中)

 トピック「シリアライズの値が破損しているDBの修復」には新たに返信することはできま
せん。

## タグ

 * [シリアライズ](https://ja.wordpress.org/support/topic-tag/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba/)
 * [DB](https://ja.wordpress.org/support/topic-tag/db/)
 * [修復](https://ja.wordpress.org/support/topic-tag/%e4%bf%ae%e5%be%a9/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 3件の返信
 * 2人の参加者
 * 最後の返信者: [gyaku](https://ja.wordpress.org/support/users/gyaku/)
 * 最後の活動: [6年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%ae%e5%80%a4%e3%81%8c%e7%a0%b4%e6%90%8d%e3%81%97%e3%81%a6%e3%81%84%e3%82%8bdb%e3%81%ae%e4%bf%ae%e5%be%a9/#post-11662223)
 * 状態: 未解決

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
