「MySQL」タグアーカイブ

MySQLのユニークキーに使えるのは767byte(255文字)まで

MySQLのユニークキーはデータを重複しないように管理したいときには便利な機能ですが、文字数の制限があります。使える文字数はUTF8などでは255文字です。これは半角でも全角でもこの”文字数”です。人の名前や住所などで255文字を超えることは滅多にありませんが、URLなどのデータでは考えられます。

対処方法としては、そんなに長いキーをユニークキーとして設定しないことが一番良いことだと思いますが、仕方ないときもあると思います。消極的な対応策としては、そのキーで使う文字セット(phpMyAdminでは「照合順序」)をLatin1やASCIIにすることで、1バイト文字(半角文字)をそのまま1バイトで扱うことができます。こうすると、半角で767文字まで使うことができます。

MySQLで重複レコードを削除する

データベースを適当に使っていると、レコードを重複して記録してしまうことがあります。キーとして設定していれば重複は防げますが、設計の時と使用後で使い方が替わってくることもあると思います。PhpMyAdminなどでSQLを実行すると、重複したレコードを除くことができます。

今回はAdressTableというテーブルから、Nameという項目で重複を削除します。いったん重複したレコードを除いたtemp_AdressTableというテーブルを作り、問題が無ければ元のテーブルと入れ替えます。

CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`;

重複しているかどうかはNameだけで判断するので、その他の項目が一致するかどうかは見ません。たとえば、Ageという項目も含めて重複を比較する場合は、以下のようにします。

CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`, `Age`;

WordPressのデータベースサーバのみ引っ越し

いつの間にか、さくらのレンタルサーバのスタンダードで扱える MySQL データベースの数が1から20に増えていました。

いままで1つに諸々のサイトのデータベースを突っ込んでいたので、管理しやすくするために、分けることにしました。さくらの場合、MySQLのデータベースはバージョンによってサーバが異なる仕様です。ついでに5.1から5.5にバージョンアップしたデータベースを作成しました。他のレンタルサーバでは、localhostに接続することで使用できますが、さくらのレンタルサーバでは個別のサーバ名を指定することになります。

今回は別のサーバになりましたので、PhpMyAdminで手元のPCにバックアップしたものを、新しいサーバにそのままリストアしました。テーブルの数は12個でした。

その後、Wordpressをインストールしたフォルダのwp-config.phpのデータベース関連の記述を新しいものに変更しました。これで引っ越しは完了です。