mysqlとphpのserialize関数とでハマったときの記録

やりたかったこと

構造)
mst_item 商品マスタ
・id 商品id(PK)
・data 商品データ(phpのserialize関数で変換された文字列)

データ例)
id,data
1,a:2:{s:4:"name";s:7:"商品1";s:11:"description";s:16:"商品1の説明";}
2,a:2:{s:4:"name";s:7:"商品2";s:11:"description";s:16:"商品2の説明";}
3,a:2:{s:4:"name";s:7:"商品3";s:11:"description";s:16:"商品3の説明";}

上記のテーブル中のid=2のレコードをまったく同じ構造のテーブルに商品IDだけ変更して登録するという作業です(コピー先のテーブルをmst_item2とします)

2つのテーブルが同じサーバ上にある場合

insert into mst_item2 (id,data) select `***`,data from mst_item where id = 2;

2つのテーブルが別のサーバ上にある場合

・サーバ1にてデータ抽出
mysqldump -u ユーザ名 -pパスワード -t --where 'id = 2' > mst_item.sql
mst_item.sqlをコピー先のサーバーに転送

・サーバ2にてデータ登録
mst_item.sqlをエディタで開いてid部分だけ編集
mysql -u ユーザ名 -pパスワード データベース名 < mst_item_sql登録


これにて全て完了したつもりだったのですがプログラムでエラー?が出るとのこと、、、
データベースの中身をみると、、、

2,a:2:{s:4:"name";s:7:"商品2";s:11:"description";s:16:"商品2 の説明";}
となっており、"商品2 の説明"に不要なスペースが入っていたためphpのunserialize関数でエラーがでているようでした

そのためエディタで編集するのではなくそのままmysqldumpしたあとにupdateするというなんとも、、、なやり方で対応しました