Contrib のバックアップ(No.9)




提供ツール

4.1 への移行支援

ALTER char() シェルスクリプト

  • 4.0, 3.X から 4.1 に upgrade したときに、char() を ALTER しないといけない。それを自動でやってくれる shell スクリプト
  • 4.1 に上げたときに一度だけ実行できる。
  • 実行にはalter権限が必要。スクリプトにユーザー名、パスワードを引数で与えて実行
  • GNUツールで固めた環境下では問題なく動作。

パッチ

ver. 4.1 用パッチ

serverとclientを違う標準キャラクタセットに

#ref(): File not found: "mysql-4.1.3-with-client-charset.patch" at page "Contrib"

#ref(): File not found: "mysql-4.1.7-with-client-charset.patch" at page "Contrib"

#ref(): File not found: "mysql-4.1.8-with-client-charset.patch" at page "Contrib"

  • コンパイル時に、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 で出力するパッチ

このパッチは、4.1.8 に取り込まれました。4.1.8 以上ではパッチ当ては不要です。

  • BLOB の内容が、0xABCDEF のように出力される。
  • mysqldump --hex-blob --skip-opt でダンプ

余計なお世話な文字チェック機能をはずす(すべてのバイト列を CHAR() が受け付ける)パッチ

#ref(): File not found: "mysql-4.1.7-ctype-sjis.patch" at page "Contrib"

#ref(): File not found: "mysql-4.1.7-ctype-ujis.patch.1" at page "Contrib"

4.1.8用は4.1.9にもあたります。

4.1 は文字コードの範囲外のバイト列をchar()にINSERTできない仕様ですが、 このパッチをあてると、全てのバイト列が char() に入るようになります。

(4.0までは全てのバイト列がINSERTできる仕様です)

cp932, eucjpms パッチ

#ref(): File not found: "mysql-4.1.9-jp-all.patch" at page "Contrib"

これは上の -with-client-charset.patch、-ctype.patch を含みます。

cp932, eucjpms キャラクターセットの追加パッチ。5.0からのバックポート。
aclocal、 autoconf の作業が必要。


ver. 4.0 用パッチ

SJIS + BLOB

  • 4.0 の BLOB 型が、sjis バイト列を余計にエスケープしないようにする
  • バイナリファイルをただしく BLOB に入れれるはず。

mysqldump 時に、BLOB の内容を HEX で出力するパッチ

4.0.23 でパッチが取り込まれました。4.0.23以上ではパッチは不要です

  • BLOB の内容が、0xABCDEF のように出力される。
  • mysqldump --hex-blob でダンプ



PHP4 用 パッチ

MySQL 4.1 への対応、その他。

このパッチは PHP 4.3.10 にもあたります。

このパッチを当てると、PHP4.3.9 の 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