前提条件は以下の通りです。
- 独自ドメインはそのまま使用する。
- レンタルサーバーを移転する。
- データベースサーバーも移転する。
MySQLのユニークキーはデータを重複しないように管理したいときには便利な機能ですが、文字数の制限があります。使える文字数はUTF8などでは255文字です。これは半角でも全角でもこの”文字数”です。人の名前や住所などで255文字を超えることは滅多にありませんが、URLなどのデータでは考えられます。
対処方法としては、そんなに長いキーをユニークキーとして設定しないことが一番良いことだと思いますが、仕方ないときもあると思います。消極的な対応策としては、そのキーで使う文字セット(phpMyAdminでは「照合順序」)をLatin1やASCIIにすることで、1バイト文字(半角文字)をそのまま1バイトで扱うことができます。こうすると、半角で767文字まで使うことができます。
データベースを適当に使っていると、レコードを重複して記録してしまうことがあります。キーとして設定していれば重複は防げますが、設計の時と使用後で使い方が替わってくることもあると思います。PhpMyAdminなどでSQLを実行すると、重複したレコードを除くことができます。
今回はAdressTableというテーブルから、Nameという項目で重複を削除します。いったん重複したレコードを除いたtemp_AdressTableというテーブルを作り、問題が無ければ元のテーブルと入れ替えます。 重複しているかどうかはNameだけで判断するので、その他の項目が一致するかどうかは見ません。たとえば、Ageという項目も含めて重複を比較する場合は、以下のようにします。
CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`;
CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`, `Age`;
PHP+MySQLでバイナリデータをINSERTするときには、bin2hex関数などを用いて、16進数に変換してから渡します。
いつの間にか、さくらのレンタルサーバのスタンダードで扱える MySQL データベースの数が1から20に増えていました。
いままで1つに諸々のサイトのデータベースを突っ込んでいたので、管理しやすくするために、分けることにしました。さくらの場合、MySQLのデータベースはバージョンによってサーバが異なる仕様です。ついでに5.1から5.5にバージョンアップしたデータベースを作成しました。他のレンタルサーバでは、localhostに接続することで使用できますが、さくらのレンタルサーバでは個別のサーバ名を指定することになります。
今回は別のサーバになりましたので、PhpMyAdminで手元のPCにバックアップしたものを、新しいサーバにそのままリストアしました。テーブルの数は12個でした。
その後、Wordpressをインストールしたフォルダのwp-config.phpのデータベース関連の記述を新しいものに変更しました。これで引っ越しは完了です。