Contrib の変更点


 - [[Home:http://www.mysql.gr.jp/frame/]]
 - [[About MyNA]]
 - [[保管庫]]
 - [[FAQ]]
 
 ----
 目次:
 
 #contents
 
 ----
 * 提供ツール [#a2c37f2d]
 
 ** 4.1以上(含む5) への移行支援 [#q871a055]
 
 *** ALTER char() シェルスクリプト [#r2366133]
 
 #ref(mysql_change_char_len.sh)
 
 - 4.0, 3.X から 4.1以上(5含む) に upgrade したときに、char() を ALTER しないといけない。それを自動でやってくれる shell スクリプト
 - 4.1,5.x に上げたときに一度だけ実行できる。
 - 実行にはalter権限が必要。スクリプトにユーザー名、パスワードを引数で与えて実行
 - GNUツールで固めた環境下では問題なく動作。
 
 
 ** 体験Knoppix [#fbe1f6e7]
 - NDBクラスター体験 Knoppix CD イメージ~
 http://www.mysql.gr.jp/knoppix/ndb/
 -- CD を入れてマシンをブートすれば、NDBクラスターのできあがり。
 -- 1台の PC に 2 つの クラスターノード(ndbd)を起動しているので、仮想的に、クラスターの障害実験が簡単にできる。(稼働中に片方の ndbd 落とせば、障害発生と同等)
 -- 細かいところは、README を読んでください。
 
 --- 実メモリー512M以上必要。
 --- 起動したら、NDBクラスター、mysqld が立ち上がる。
 --- ndbd は 2つ起動する。mysqld は1つ。おかげで CPU パワーはじめとするリソースをけっこう食います。
 
 ~
 -- cdimg_20050121_1.iso
 --- 650MB。
 --- MySQL version 4.1.9
 --- developper summit 2005 でサンプル出していたイメージです。
 
 ~
 -- cdimg_20050216_1.iso
 --- 638M
 --- MySQL version 4.1.10 with MyNA jp patch
 
 ~
 - Knoppix カスタマイズ TIPS~
 http://www.mysql.gr.jp/knoppix/customize-knoppix3.4
 
 
 ~
 ~
 ** mysqlbench [#o20318aa]
 - pgbench を MySQL 用に移植したものです。
 - mysqlbench はマルチスレッドで複数のクライアントを生成しています(pgbenchと違う点)。
 - 使い方はpgbenchとだいたい同じ。いくつかオプションが違うぐらい。README 読んでください。
 - ソースの検証のご協力をお願いします。
 
 ~
 #ref(mysqlbench-0.1.tgz)
 -- 現在のところ、全てのスレッドの状態確認と同期を取るために、回りくどいことをしています。(要検証)
 -- そのため、接続を含むテスト結果(includeの表記がある結果)は大きなオーバーヘッドがかかっています。exclude の方で比較してください。
 -- Linux の場合、/lib/tls/ の、新しいスレッドの方ではうまく動かないことがあります(要対応)。そのため、リンクは前の LinuxThread の方を使用してください。
 
 
 ~
 ~
 ** Super-Smack [#sdb759d4]
 - 現在のメンテナー: http://vegan.net/tony/
 - オリジナル:  http://jeremy.zawodny.com/mysql/super-smack/ : MySQL Super Smack
 - 複数のクライアントをマルチスレッドで生成できる。
 - version 1.2 では、PostgreSQLサポート + gcc-3.x はコンパイルエラーになる。gcc-2.95 だと OK。(version 1.3 で修正済み)
 
 
 
 ~
 ~
 ** MySQL の変数、オプションのバージョン間での違い [#qb1fbab5]
 #ref(param.dump-200504.00)
 
 MySQL の変数、オプションの一覧を、MySQL テーブルにして、mysqldump したものです。~
 mysql コマンドに食わせてください。
 
 |テーブル名      	|概要|h
 |param_vari      	|MySQL サーバー変数一覧|
 |param_vari_show	|MySQL サーバー変数一覧その2。 SHOW VARIABLES でしか現れてこない変数|
 |param_opt       	|オプション一覧|
 |param_showstatus	|SHOW STATUS 一覧|
 |param           	|上記4つのテーブルの MERGE|
 
 ~
 ~
 ----
 * パッチ [#ff6a9572]
 
 ** ver. 5.1 用パッチ [#obc7e3b6]
 
 #ref(mysql-5.1.14-beta-jp-all.patch2)
 
 ~
 ~
 ~
 ** ver. 5.0 用パッチ [#c7061b2e]
 
 #ref(mysql-5.0.33-jp-all.patch2)
 
 - --with-client-charset
 - mysqldump 修正
 - 自動変換抑制オプション(--skip-conversion)
 - 全てのバイト列が char() に入るようにするパッチ
 
 詳しくは、4.1 用のパッチの節を参照してください。同じです。~
 パッチを適用した後、ac が必要です
  aclocal
  autoheader
  libtoolize --automake --force
  automake
  autoconf
  
  cd innobase
  aclocal
  autoheader
  libtoolize --automake --force
  automake
  autoconf
 
 
 
 [[旧いパッチ:http://www.mysql.gr.jp/Archive/]]
 
 
 *** パッチをあてた MS-Windows 用バイナリ&ソース [#v2422869]
 
 #ref(mysql-5.0.33-jp-cp932-win32-2.zip)
 #ref(mysql-5.0.33-jp-win-src-2.patch)
 #ref(mysql-5.0.33-jp-win-src-2.zip)
 
 [[旧いバージョン:http://www.mysql.gr.jp/Archive/]]
 
 - cp932 を標準にしています
 
 
 
 ~
 ~
 ~
 ** ver. 4.1 用パッチ [#t69f8797]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 
 [[旧いパッチ:http://www.mysql.gr.jp/Archive/]]
 
 *** パッチをあてた MS-Windows 用バイナリ&ソース [#zd2f8f10]
 - libmysql.dll をこのバイナリのやつに入れ替えるだけでも、文字破壊対策として、効果あるアプリがあるでしょう。
 - c:\mysql をインストール先としてコンパイル。
 
 ~
 - 4.1.21
 #ref(mysql-4.1.21-jp-cp932-win32.zip)
 #ref(mysql-4.1.21-jp-win-src.patch)
 #ref(mysql-4.1.21-jp-win-src.zip)
 #ref(mysql-4.1.21-jp-cp932-win32-2.zip)
 #ref(mysql-4.1.21-jp-win-src-2.patch)
 #ref(mysql-4.1.21-jp-win-src-2.zip)
 
 
 [[旧いバージョン:http://www.mysql.gr.jp/Archive/]]
 
 -- sjis(cp932) をサーバーとクライアントの default-character-set に
 -- mysqldump 修正
 -- cp932, eucjpms 追加
 -- --skip-conversion 追加
 
 
 
 
 ~
 ~
 *** serverとclientを違う標準キャラクターセットに [#jc04bac6]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 #ref(mysql-4.1.9-with-client-charset.patch)
 
 
 
 - コンパイル時に、server と client を違うキャラクターセットにコンパイルできるようにする
 - configure --with-client-charset= と指定
 -- ./configure --with-client-charset=binary --with-charset=ujis の指定が可能
 -- ./configure --with-charset=ujis の場合は、クライアントの標準もujisになる。
 - mysqldump がconfigure時のキャラクターセットを無視してutf8固定になるのを止めさせるようにもなる。(utf8固定ではなく、configureで指定したキャラクターセットを標準とするようになる)
 
 パッチ当てた後、aclocal ; autoconf を実行のこと。(configure.in を変更するから)
 
 ~
 ~
 *** mysqldump 時に、BLOB の内容を HEX で出力するパッチ [#y5cc07d9]
 このパッチは、4.1.8 に取り込まれました。4.1.8 以上ではパッチ当ては不要です。
 
 #ref(mysql-4.1.4-gamma-mysqldump-hex-blob.patch)
 
 - BLOB の内容が、0xABCDEF のように出力される。
 - mysqldump --hex-blob --skip-opt でダンプ
 
 ~
 
 #ref(mysql-4.1.21-jp-all.patch2)
 #ref(mysql-4.1.9-mysqldump-fix.patch)
 
 上の hex-blob が MySQL のソースに取り込まれたとき、char() binary も hex 出力するように変わっていました。(MySQL-5.0.15では直っています)~
 また、0バイトの BLOB を出力すると、「0x」 だけになり、SQLの構文エラーになるバグも含まれてしまいました。(MySQL-5.0.15では直っています)~
 このパッチは、
 - --hex-blob を指定すると BLOB のみを HEX で出力するように修正
 - --hex-char とすると CHAR() BINARY を HEX 出力するように修正
 - 0バイト時の構文エラーも修正
 - --csv (same as --fields-terminated-by=',' --fields-optionally-enclosed-by='"' --lines-terminated-by='\r\n') 追加
 
 
 ~
 ~
 *** 余計なお世話な文字チェック機能をはずす(すべてのバイト列を CHAR() が受け付ける)パッチ [#ib66de6a]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 #ref(mysql-4.1.8-ctype.patch)
 
 4.1 は文字コードの範囲外のバイト列をchar()にINSERTできない仕様ですが、
 このパッチをあてると、全てのバイト列が char() に入るようになります。
 
 (4.0までは全てのバイト列がINSERTできる仕様です)
 
 
 ~
 ~
 *** cp932, eucjpms パッチ [#f7dce4ec]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 #ref(mysql-4.1.10-jp-all.patch)
 
 これは上の -with-client-charset.patch、-ctype.patch を含みます。
 
 cp932, eucjpms キャラクターセットの追加パッチ。5.0からのバックポート。~
 aclocal、 autoconf の作業が必要。
 
 
 ~
 ~
 *** 余計なお世話の自動変換を停止するオプションのパッチ [#g4c11746]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 #ref(mysql-4.1.10-skip_conversion.patch)
 
 - 脱文字破壊!
 - mysqld --skip-conversion とすることで、自動変換機能を停止させます。
 - まるで 4.0 までのような動きになります。
 - メリットは、クライアントのキャラクターセットが何であれ(たとえlatin1であっても)、
 クライアントから送られてきたバイト列は変換を通らず、そのままinsertします。
 - デメリットは、今のぱっちだと SQL関数の、CONVERT() 関数が使えません。
 -- どなたか対応お願いします
 
 
 
 ~
 ~
 *** sjis<->cp932, ujis<->eucjpms 変換をしないパッチ [#n9a32592]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 
 - cp932 と sjis の組み合わせの時、自動変換機能を止める
 - eucjpms と ujis の組み合わせの時、自動変換機能を止める
 
 ~
 ~
 *** SET NAMES 文を実行したらescape処理時のキャラクターセットも変更するパッチ [#y820a366]
 
 #ref(mysql-4.1.21-jp-all.patch2)
 
 - SET NAMES 文を実行したら、内部(mysql.charset : escapeするために使用される)キャラクターセットも指定したものに変更。
 
 
 ~
 ~
 ----
 **ver. 4.0 用パッチ [#a47ea64f]
 *** SJIS + BLOB [#s44fd260]
 
 #ref(mysql-4.0.20-field_conv.cc.patch)
 
 - 4.0 の BLOB 型が、sjis バイト列を余計にエスケープしないようにする
 - バイナリファイルをただしく BLOB に入れれるはず。
 
 *** mysqldump 時に、BLOB の内容を HEX で出力するパッチ [#dd94fca7]
 4.0.23 でパッチが取り込まれました。4.0.23以上ではパッチは不要です
 #ref(mysql-4.0.21-mysqldump-hex-blob.patch)
 
 - BLOB の内容が、0xABCDEF のように出力される。
 - mysqldump --hex-blob でダンプ
 
 ~
 - Windows版バイナリ(based on mysql4.0.21)
 #ref(mysqldump2-4.0.21.exe)
 
 
 ~
 #ref(mysql-4.0.23-mysqldump-fix.patch)
 上の hex-blob が MySQL のソースに取り込まれたとき、char() binary も hex 出力するように変わっていました。~
 また、0バイトの BLOB を出力すると、「0x」 だけになり、SQLの構文エラーになるバグも含まれてしまいました。~
 このパッチは、
 - --hex-blob を指定すると BLOB のみを HEX で出力するように修正
 - --hex-char とすると CHAR() BINARY を HEX 出力するように修正
 - 0バイト時の構文エラーも修正
 - --csv (same as --fields-terminated-by=',' --fields-optionally-enclosed-by='"' --lines-terminated-by='\r\n') 追加
 
 
 
 ~
 ~
 ----
 ** PHP4 用 パッチ [#x7461ff9]
 *** MySQL 4.1(5.0) への対応、その他。 [#uac0a54d]
 
 #ref(php-4.3.11-mysql.patch.zip)
 #ref(php-4.3.9-mysql.patch.tgz)
 #ref(php-5.0.4-mysql.c.patch)
 
 ~このパッチを当てると、PHP4 の mysql.so は以下の機能を持ちます。
 
 - php.ini ファイルに以下のキーワードが指定できます。
 
 -- mysql.set_names = キャラクターセット名
 -- mysql.load_group = my.cnfグループ名
 -- mysql.compress  = 0か1
 
         mysql.set_names = binary
                 サーバーに接続したら、すぐに、「SET NAMES binary」 を実行する。
                 なにも指定していないときは、SET 文は実行しない。
                 指定できるキャラクターセット名は、MySQL の指定に従う。(ujis, sjis, binary, utf8, ...)
 
         mysql.load_group = php
                 my.cnf ファイルの中の [php] グループを読み込む。
                 なにも指定していないときは、なにも読み込まない。
 
         mysql.compress = 1
                 通信を gzip 圧縮する。0 のときは圧縮しない。
 
 
 - new function:
 -- string  mysql_hex_string(string);
         与えられた文字列を 16進数表示します。
         ex.
         echo mysql_hex_string("あいうえお");
 
 この関数は、MySQL 4.0.22 以上の 4.0 および、4.1.7 以上で使用できます。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS