Posts Tagged ‘mysql’

mysql:configure: error: Cannot find libmysqlclient under /usr

mysql5のconfigureで以下のようなメッセージが出るとき、 configure: error: Cannot find libmysqlclient under /usr/local. Note that the MySQL client library is not bundled anymore! かつ、アーキテクチャが64のときは./configure オプションに –with-mysql=/usr/bin/ –with-libdir=lib64 が足りない。 アーキテクチャの確認方法は uname -r

mysql:テーブルのrepair

mysqlでこんなエラーメッセージが出てた。 Table table_name is marked as crashed and should be repaired とりあえず、エラーが出ているテーブルを調べる。 mysql> check table table_name; +————+——-+———-+——————————————————-+ | Table | Op | Msg_type | Msg_text | +————+——-+———-+——————————————————-+ | table_name | check | warning | Table is marked as crashed | | table_name | check | warning | 1 client is using or hasn’t closed the [...]

mysql:DATETIME型とTIMESTAMP型

DATETIME型は8バイト、TIMESTAMP型は4バイト。 サポートする日付の範囲は DATETIME: 0000年~9999年 TIMESTAMP: 1970年~2037年 4バイトくらいケチらずにDATETIME型を使うのが基本か。 TIMESTAMP型で更新日時など内部データを持つのはアリかもしれない。 けど、生年月日のようなデータ入れられない。 システムの中で何種類も日付型を使うのが面倒ならDATETIME型に統一したほうがいい。

mysql:MySQLのバックアップとリストア

mysqldumpでバックアップ&リストア すべてのデータベースをdumpでバックアップ $ mysqldump -u root -p -x –all-databases > dump.sql 特定のデータベースをバックアップするときは $ mysqldump -u root -p データベース名 > dump.sql すべてのデータベースを復元するときは $ mysql -u root -p < dump.sql 特定のデータベースを復元するときは $ mysql -u root -p データベース名 < dump.sql

mysql:mysqlとsennaのインストール

yumで要るものを全部入れる。 yum install mecab yum install mecab-ipadic yum install senna yum install MySQL-shared yum install MySQL-client yum install MySQL-server mysql -urootでログインして、↓このように”Tritonn Project”のバージョンが表示されればOK。 mysql -Vでは表示されないので注意。 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2419 Server version: 5.0.51a-modified-log MySQL Community Server (GPL) (portions (c) Tritonn Project) Type ‘help;’ or [...]

MySQL:auto_incrementが最大値まで達したとき

auto_incrementにしたカラムの型がintなら2147483647、bigintなら9223372036854775807がautoincrementの最大になる。 実際に最大値までauto_incrementを進めてみる。 ALTER TABLE table1 AUTO_INCREMENT= 2147483647; auto_incrementが最大値に達するともうそのテーブルには行を追加することはできなくなります。 oracleのシーケンスならCYCLEオプションがあるけどmysqlのauto_incrementにはそのような機能は無いらしい。 ではauto_incrementが最大値に達したとき、どうすればよいのか? 単純に ALTER TABLE table1 AUTO_INCREMENT= 1; としても、table1に1より大きいキーが存在する限りauto_incrementは1に戻らない。 DELETE FROM table1; –データを全部消す。 ALTER TABLE table1 AUTO_INCREMENT= 1; ならばauto_incrementは1に戻るので、循環シーケンスと似たような動きにするにはINSERTトリガーで 1. 対象テーブルのauto_increment値が最大に達しているかチェック。最大なら2.へ 2. 対象テーブルのデータを別テーブルに退避 3. 対象テーブルのデータをDELETE 4. ALTER TABLE~でauto_incrementを初期値に設定 という流れになるけど、INSERTの度に1.のチェックを走らせるのはちょっと嫌(1/2147483647の為に余計な処理を入れたくない)。また、退避後のデータをどう扱うかも微妙(UNIONするにしても別のキーが要るし・・・)だから int autoincrementでキーの枯渇が心配ならbigint型にしたほうがよいと思う。 bigintの最大値は9223372036854775807。intの約42億倍もある。 これは1日に1億個のキーを消費しても2億年持つという計算になる。

MySQL:プロセスをkillする

MySQLにログインして、プロセスの一覧を表示し削除したいプロセスのIDを確認する。 SHOW PROCESSLIST; IDを指定して削除する。 kill [ID];

php:Windows環境でphp.exe+apache+MySQLの環境を作る

php php.netからバイナリをダウンロードする。 インストーラでもいいけど、とりあえずzipにしとく。 解凍したらフォルダごと適当なところに移動する。(以降、仮にC:php-5.2.6-Win32に置いたと仮定して読んでください。) フォルダの中にあるphp.ini-recommendedをコピーしてphp.iniに名前を変える apache apache.orgから現在の最新版Apache2.2のWindows用インストーラをダウンロード&実行する。 オプションは適当に選ぶ。 httpd.confに設定を追加する。 標準のパスでインストールしたなら、C:Program FilesApache Software FoundationApache2.2confに設定ファイルhttpd.confがある。 以下の設定を追記する。 LoadModule php5_module “C:php-5.2.6-Win32php5apache2_2.dll” PHPIniDir “C:php-5.2.6-Win32″ AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps linux環境の”httpd configtest”に変わるコマンドは httpd.exe -t このコマンドを実行して”Syntax OK”が表示されることを確認する。 OKならapacheを再起動する。 httpd.exe -k restart 公開ディレクトリにtest用のphpファイルを置いて、phpが実行されていればOKです。 XdebugをWindows環境で使うには http://pecl4win.php.net/ext.php/php_xdebug.dll からphp_xdebug.dllをダウンロードしてエクステンションDirに保存する。 エクステンションとPEARを使う&開発環境用にphp.iniを編集する php.ini #pearディレクトリをinlude_pathに入れる include_path = “.:C:php-5.2.6-Win32pear” #開発用にdisplay_errorsをOnにする display_errors = On #extension_dirを設定する extension_dir = “C:php-5.2.6-Win32ext” #エラーログを出力する error_log [...]