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
Archive for the ‘mysql’ Category
mysql: mysql5.1.41をソースからインストール
1月 24th, 2010
admin mysqlをソースからインストールする。 pluginは全部有効にする。 cd /usr/local/src wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/ tar zxfv mysql-5.1.41.tar.gz cd mysql-5.1.41 ./configure –prefix=/usr/local/mysql –with-charset=utf8 –with-extra-charsets=all –with-mysqld-user=mysql –with-plugins=max –enable-local-infile make make install 以上でインストールは完了。 ※この段階でエラーが出る場合は後述のエラーがでるときを参照 次に初期設定をおこなう。 ソースの雛形からmy.cnf を作成する。 cp support-files/my-medium.cnf /etc/my.cnf 作成したmy.cnf に文字コードの設定を追加する。 mysqld、mysqldump、mysql セクションにそれぞれ以下の設定を追加する。 [mysqld] default-character-set=utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 [...]
mysql:PL/SQLでCursor declaration after handler declaration
8月 25th, 2009
admin mysqlのPL/SQLでこんなエラーは出るとき ERROR 1338 (42000): Cursor declaration after handler declaration 意味:カーソル宣言がハンドラ宣言よりあとで行われています。 Variable or condition declaration after cursor or handler declaration 意味:変数または条件宣言がカーソルまたはハンドラ宣言より後で行われています。 つまりPL/SQLの宣言は変数、条件、カーソル、ハンドラの順で行えということですね。 CREATE PROCEDURE procname( in arg1 VARCHAR(10), in arg2 VARCHAR(20) ) BEGIN — 変数宣言 DECLARE UserName VARCHAR(10); DECLARE done INT DEFAULT 0; — カーソル宣言 DECLARE cur_name CURSOR FOR SELECT user_name FROM table_name WHERE user_prop = [...]
mysql:テーブルのrepair
7月 15th, 2009
admin 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:リモートログインできるユーザの追加
6月 3rd, 2009
admin mysqlにリモートログインできるユーザを追加するコマンド GRANT ALL PRIVILEGES ON DBNAME.* TO username@”%” IDENTIFIED BY ‘password’ WITH GRANT OPTION; FLUSH PRIVILEGES; “%”のところにIPアドレスを指定してアクセスできる接続元IPを指定することができる。 “%”なら何処からでも接続可になる。
mysql:mysql6のソースインストールでconfigure: WARNING: unrecognized options
5月 3rd, 2009
admin mysql6をソースからインストールしようとしたらconfigureのところでこんなエラーが configure: WARNING: unrecognized options: –with-innodb そんなわけねー、と思いつつ調べたら最近はこう指定するらしい。 –with-plugins=partition,blackhole,heap,innobase,myisam,ndbcluster,maria これで無事にconfigureとおりました。
mysql:MySQLのバックアップとリストア
4月 12th, 2009
admin 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のインストール
4月 12th, 2009
admin 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が最大値まで達したとき
7月 27th, 2008
admin 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億年持つという計算になる。

Posted in
Tags: