end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

mysql

pkeyがauto_incrementの場合、PARTITION BY RANGEは不可?

mysql 5.1では↓こうらしい。主キーを変更する訳にはいかないんですけど mysql> desc juchuu; +-------------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------------…

上位?件の平均算出で Every derived table must have its own alias

mysqlの副問合せで、上位?件の平均を算出しようとしたら select avg(val) from (select val from measure_0_hour_day_201202 where member_id=1 order by val desc limit 3) ERROR 1248 (42000): Every derived table must have its own alias と、「きちん…

null値との四則演算結果は必ずnullなので、coalesce()で0に変換

null値との四則演算結果は必ずnull MySQL のNULL ではまったことあれこれ - Slow Dance http://dev.mysql.com/doc/refman/5.1/ja/problems-with-null.html ↑この辺りに分かりやすく記載されていますが、null値との四則演算結果は必ずnull。 誰もが一度は引っ…

mysqldump: Got error: 1016: Can't open file: './〜/〜.frm' (errno: 24) when using LOCK TABLES

show tablesすると、953テーブルもあるサービスのmysqldumpを実行したら、次のようなエラーが発生しました。 $ mysqldump -u ないしょ -p ないしょ | gzip -c > ~/tmp/db.dmp.gz Enter password: mysqldump: Got error: 1016: Can't open file: './〜/〜.frm…

decimal型には整数部のない小数を登録できるみたい

excelでは、「-.12」のように入力しても「-0.12」のように変換されることは知っていましたが、mysqlでも同様?のことができるとは驚いた。 create table test_val ( id int primary key AUTO_INCREMENT, val decimal(5,2) ); insert into test_val (val) valu…

mysqlのWorkbenchで実DBからER図を自動生成

http://d.hatena.ne.jp/end0tknr/20100603/1275557645以前、SQL::Translator に関するエントリを書いていますが、ある程度の規模のDBでは、テーブル間の関係をER図等で把握したいケースがあると思います。 私の周りでは、「1) visioでER図, excelでテーブル…

alter tableによるcolumn変更

どうも、CHANGE COLUMN と MODIFY を混同してしまうので、整理。 列の追加 ALTER TABLE $table ADD COLUMN $col_name $type; 列の削除 ALTER TABLE $table ADD DROP COLUMN $col_name; 列の名前や型を変更 ALTER TABLE $table CHANGE COLUMN $old_col_name $…

mysqlで create table select , create table like によるtable copy

知りませんでした。こんなに簡単にテーブル構造を含めてコピーできるなんて... create table ... selectを使用すると 既に存在しているテーブルと同じ構造のテーブルを作成する事ができる またデータもコピーされる 但し、インデックスやauto_incrementは新…

mysqlのFEDERATEDによる別マシン間でのtable join

http://dev.mysql.com/doc/refman/5.1/ja/federated-storage-engine.htmlmysqlにそんなストレージエンジンがあるとは驚きました。 トランザクションをサポートしない等の制約があるようですが、そのうち使うことがあるかも。参考url http://thinkit.co.jp/fr…

mysqlのuse index()って、世の中ではどのくらい使われているんだろう?

http://dev.mysql.com/doc/refman/5.1-olh/ja/index-hints.html USE INDEX (index_list) テーブル内の行を検索するために、指定されたインデックスの 1 つのみを使用するよう MySQL に指示できます。: IGNORE INDEX (index_list) いくつかの特定の (1 つまた…

mysql 5.5系をsrcからインストール

※以前、記載した mysql 5.1.30のinstall手順 http://d.hatena.ne.jp/end0tknr/20090130/1233288533colinux環境を壊してしまったので、mysql 5.5.11をinstallしようとしたら、configure時に次のようなerrorとなりました。 $ tar -zxvf mysql-5.5.11.tar.gz $ …

mysqldumpとインポート

$ /usr/local/mysql/bin/mysqldump -u root -p \ --skip-lock-tables --order-by-primary db_name | gzip -c > db_name.dmp.gz $ gzip -dc db_name.dmp.gz | mysql -u root db_name -p※cygwinがあれば、windowsでも同様の操作が可能です。 (windowsにも、パ…

mysqlのオプションで、タブ区切出力やファイル出力

http://ameblo.jp/principia-ca/entry-10767163898.htmlサイバーエージェント公式エンジニアブログを読んで、改めてmysqlのリファレンスマニュアルを読んでみましたが、便利そうなoptionが多くありました。http://dev.mysql.com/doc/refman/5.1/ja/mysql-com…

joinを使ったdeleteを実行しようとしたら

mysql> delete juchuu_result -> from juchuu_result jr -> join juchuu_summary js on (jr.id=js.id) -> where jr.is_new_bukken=1 and js.admit_juchuu_user is null; ERROR 1109 (42S02): Unknown table 'juchuu_result' in MULTI DELETEと、怒られました…

サブパーティショニングを試してみた

http://dev.mysql.com/doc/refman/5.1/ja/partitioning-subpartitions.htmlmysqlでは、パーティショニングにより分割したテーブルを更に分割できるサブパーティショニングという機能があるそうですので、その手順を書き留めておきます。※mysqlのドキュメント…

mysqlへの同時接続数を調べる

innodbでは innodb_thread_concurrency = 同時接続数と思っていました サーバへのリクエストが増え、timeoutが発生した為、mysqlへの同時接続数を調べてみました。確かに Max_used_connections = 146 なんて値は見たことありません。 $ /usr/bin/mysqladmin …

mysqlのcollateを使って大文字-小文字や全角-半角を無視した検索

mysqlでは、collate = utf8_unicode_ciを指定すると、大文字-小文字だけでなく、全角-半角を同一視できるそうですが、実際にどの文字が同一視されるのかを試してみました。 collateとは http://tetlist.info/2009/01/mysql ↑このエントリでも分かりやすく紹…

mysqlのSQL_CALC_FOUND_ROWS で LIMIT句なしで書かれた行数を取得

http://d.hatena.ne.jp/ZIGOROu/20091126/1259218194 http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html#function_found-rowsmysqlって、SQL_CALC_FOUND_ROWS で LIMIT句なしで書かれた行数を取得できるんですね。 ということは、Data::Pa…

mysql 5.1のtimestamp型におけるDEFAULT値の不思議? 再び

http://d.hatena.ne.jp/end0tknr/20090403/1238753081以前のエントリで、timestamp型のDEFAULTに関して記載しましたが、今回は update時の不思議?を記載しておきます。 尚、今回のtestでは、次のようなtableを使用します。 mysql> desc time_test; +--------…

mysql_enable_utf8でperl-mysql間の文字列をflaged utf8に統一

以前のencodingは sjis(cp932)やらeuc-jp等、作るものによってバラバラでしたが、utf8に統一されるようになってきたので、備忘として書いておきます。http://search.cpan.org/perldoc?DBD::mysql以下のようにdb接続時に mysql_enable_utf8 を指定すれば、per…

DBD::mysqlのinstallは、mysql_configやtestuserを指定しましょう

DBD:a:mysqlをinstallする際、単純に実行すると、エラーで怒られてしまいます。例えば、perl Makefile.PLでは... $ cd DBD-mysql-4.010 $ /usr/local/bin/perl Makefile.PL Can't exec "mysql_config": No such file or directory at Makefile.PL line 76. …

mysql5.1 for winでデフォルトストレージエンジンを変更

「MySQL Server Instance Configuration Wizard」でエンジン変更 http://d.hatena.ne.jp/end0tknr/20090130/1233288533以前、srcからinstallしたlinux版mysql5.1のデフォルトストレージエンジンはMyISAMだったので、/etc/my.cnf の「default-storage-engine …

mysqlで双方向(マルチマスタ)レプリケーション

前回までに1台の複数のmysqlを起動する方法を紹介しましたが、今回は、それらで双方向(マルチマスタ)レプリケーションを行う方法を紹介します。 my.cnf と my2.cnf 私のcolinux環境ではオプションファイルを切り替えることで、複数のmysqlを起動していますが…

設定ファイル(my.cnf)を複製して複数のmysqlを起動

mysqlのドキュメントでは、次のように複数のmysql起動手段として再?コンパイルを紹介していますが、設定ファイル(my.cnf)を複製すれば、複数のmysqlを起動できるようです。http://mirror.hostfuss.com/mysql/doc/refman/5.1/ja/multiple-unix-servers.html U…

DBD::mysqlでperlからmysqlに接続(機種依存文字や0x5Cも問題なし)

mysqlのinstallが完了したので、今回はDBD::mysqlでperlからmysqlへの接続方法を紹介します。 DBD::mysqlのinstall $ /usr/local/bin/perl Makefile.PL \ --mysql_config=/usr/local/mysql/bin/mysql_config \ --testdb=endo_test \ --testuser=endo \ --tes…