MySQL

MySQLのMyISAM形式のテーブルで「Incorrect information in file: *.frm」エラーが出たときの修復方法

先日ファイルシステムを復旧した際に、MySQLのあるテーブルでSELECT文などを実行すると以下のようなエラーが出るようになりました。 ERROR 1033 (HY000): Incorrect information in file: *.frm今回の対象のテーブル形式はMyISAMだったのですが、エラーメッ…

MySQLで使えてSQLiteで使えないSQL文

とあるWebアプリケーションを正月休みの間開発していたのですが、諸般の事情により最初に使っていたMySQLからSQLiteに切り替えることになりました。 その際に、いくつかSQLを変更する必要があったので、SQLiteとMySQLで使える文の違いをメモしておきます。 C…

MySQLでは文字列でもBETWEENや不等号は使える

「MySQLでIPアドレスを記録する方法 - public static void main」の訂正です。 上の記事で、IPアドレスを数値型で保存するメリットとして、BETWEENや不等号が使えることをあげましたが、文字列型でもBETWEENや不等号が使えます。 今まで、使う機会がなかったの…

MySQLでIPアドレスを記録する方法

INET_ATONとINET_NTOAというMySQLの関数を使います。 INET_ATON ・・・ IPアドレスを10進数のint型の数字に変換(192.168.0.1 ⇒ 3232235521) INET_NTOA ・・・ 10進数のint型の数字をIPアドレスに変換(3232235521 ⇒ 192.168.0.1) CREATE TABLE test( ip_address…

レコードの削除のセオリー

MySQLのdeleteは、削除を実行した後インデックスを再構成するので、コストが高い処理といわれています。 そのため、deleteを行うより、削除フラグを作って、それをupdateすることが推奨されています。 その後、物理的にデータを消す必要があるときは、システ…

アメブロのRSSのURL変更に対応

明日の午後2時にアメブロの古いRSSのURLが使えなくなりますので、簡単なブログ用のクローラを動かしているのですが、301対応が間に合わないため手動でMySQLのRSSテーブルのURLを置換しました。以前似たような処理をするときにはプログラムでselectした結果を…

レプリケーションのマスターの変更

とあるデータを収集しているMySQLサーバのマスターのHDDがいっぱいになったのでこれを機に新しいマシンに切り替えることにしました。 ということでメモ。 まずは、元マスターのMySQLを止めて新マスターに/var/lib/mysqlにあるデータをコピーする。 今回はバ…