SAK 図書館
MySQL 編1 - インストール、ODBC ドライバ、日本語設定、トランザクション設定
突然、MySQL の最近のものが必要によって、インストールと環境設定を行うこと にした。インストールに使用したパッケージは、 mysql-4.0.13-win.zip MyODBC-3.51.06.exe である。 ■MySQL 4.0.13 ・zip を解凍して、setup.exe を実行するだけである。 私は、j:\mysql\ にインストールした。 ■MySQL ODBC ドライバ 3.51.06 ・MyODBC-3.51.06.exe を実行してインストールする。 ODBC の設定は、デフォルトでユーザ DSN に設定されていた。 これは ASP 等で困るので、MySQL のユーザ DSN を削除して、システム DSN として追加作成した。 ODBC ドライバには、MySQL ODBC 3.51 Driver を指定する。 Data Source Name: MySQL Description : MySQL ODBC 3.51 Driver DSN Host/Sercer Name: localhost Database Name : sak User : sak Password : Port : 3306 ■MySQL サービス開始 ・開発用なので、手作業で開始処理することにした。 サービスの開始は、次のプログラムを起動すると自動的に行われる。 スタートアップに自動的に組みまれてもいたので、そちらは削除した。 また、サービスにも MySql として自動設定されているので、こちらは 手動に変更した。winmysqladmin.exe を手動で実行すると、サービスの MySql が開始される。 J:\mysql\bin\winmysqladmin.exe ・サービスの停止は、winmysqladmin.exe で、WINNT、Stop the Service を 右ボタンクリックのメニューから実行する。 尚、winmysqladmin.exe を終了してもサービスは動作している。 Stop the Service を実行しないとサービスは終了しない。 ■日本語の設定 ・winmysqladmin.exe の my.ini Setup タグで、[mysqld] セクションに 次のとおり追加した。(サービスを停止してから行うこと。) 追加後、Save Nodification ボタンを押して更新しておくこと。 language=j:/mysql/share/japanese default-character-set=sjis ■トランザクション設定 ・winmysqladmin.exe の my.ini Setup タグで、mysqld-nt から mysqld-max-nt に変更する。(サービスを停止してから行うこと。) 次に [mysqld] セクションに、次のとおり追加した。 j:/mysql/data/trans/ フォルダは手作業で作成しておく。 追加後、Save Nodification ボタンを押して更新し、サービスを起動する。 尚、この設定は InnoDB 方式なのだが、もうひとつ別の設定方法もあった。 innodb_data_file_path=ibdata1:64M innodb_data_home_dir=j:/mysql/data/trans/ innodb_log_group_home_dir=j:/mysql/data/trans/ innodb_log_arch_dir=j:/mysql/data/trans/ set-variable=innodb_mirrored_log_groups=1 set-variable=innodb_log_files_in_group=3 set-variable=innodb_log_file_size=5M set-variable=innodb_log_buffer_size=8M innodb_flush_log_at_trx_commit=1 innodb_log_archive=0 set-variable=innodb_buffer_pool_size=16M set-variable=innodb_additional_mem_pool_size=2M set-variable=innodb_file_io_threads=4 set-variable=innodb_lock_wait_timeout=50 ・実際にトランザクションを使用するには、テーブル単位に type=InnoDB を 指定しなければならない。 作成時になら、create table ... type=InnoDB; と、 既に作成済みなら、alter table ... type=InnoDB; alter のとき、文字化けのエラーのようなものが返ってくるのだが、 Warnings: 0 で、正常にトランザクションは使用できた。 create table test (a char(4)) type=InnoDB; alter table test type=InnoDB; ・トランザクションの操作は、次のようにする。 尚、begin; でトランザクションを開始しない場合、オートコミットされる ようである。オートコミットの場合、ロールバックは使えない。 -- オートコミット insert into test values ('a001'); insert into test values ('b002'); -- トランザクションコミット begin; insert into test values ('a100'); insert into test values ('b100'); commit; -- トランザクションロールバック begin; insert into test values ('y999'); insert into test values ('z999'); rollback; select * from test; +------+ | a | +------+ | a001 | | b002 | | a100 | | b100 | +------+ ・my.ini 全体は、次のようになっている。 #This File was made using the WinMySQLAdmin 1.4 Tool #2003.05.26 16:04:25 #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=J:/mysql #bind-address=10.1.1.2 datadir=J:/mysql/data #language=J:/mysql/share/your language directory language=j:/mysql/share/japanese default-character-set=sjis #slow query log#= #tmpdir#= #port=3306 #set-variable=key_buffer=16M innodb_data_file_path=ibdata1:64M innodb_data_home_dir=j:/mysql/data/trans/ innodb_log_group_home_dir=j:/mysql/data/trans/ innodb_log_arch_dir=j:/mysql/data/trans/ set-variable=innodb_mirrored_log_groups=1 set-variable=innodb_log_files_in_group=3 set-variable=innodb_log_file_size=5M set-variable=innodb_log_buffer_size=8M innodb_flush_log_at_trx_commit=1 innodb_log_archive=0 set-variable=innodb_buffer_pool_size=16M set-variable=innodb_additional_mem_pool_size=2M set-variable=innodb_file_io_threads=4 set-variable=innodb_lock_wait_timeout=50 [WinMySQLadmin] Server=J:/mysql/bin/mysqld-max-nt.exe user=sak password=******** ■データベースの作成 ・データベースを次のように作成した。 test と言うデータベースは削除した。 対話型ツール mysql.exe を次のように起動する。 終了は、\q である。 J:\mysql\bin\mysql.exe -u root mysql ・mysql.exe 上で次のように処理した。 drop database test; create database sak; ■ユーザの作成 ・ユーザの作成を次のようにした。 マニュアルを見て、パスワードを指定すると、ODBC も mysql.exe でも接続 出来ず、仕方なく update でパスワードを消した。 ユーザ sak に全ての権限を与えている。 insert into user (Host, User, Password) values ('localhost', 'sak', PASSWORD('sak')); update user set Password='' where User='sak'; grant all on *.* to sak@localhost; ■以後のログイン ・データベース sak にユーザ sak でログインするには、次のようにする。 J:\mysql\bin\mysql.exe -h localhost -D sak -u sak ■mysql.exe での日本語表示 ・日本語の設定をしたためか、項目名やデータに日本語が含まれていても正常 に mysql.exe で select 表示できた。 select * from testm; +--------+---------+---------+---------+ | キー | データ1 | データ2 | データ3 | +--------+---------+---------+---------+ | x001 | 1 | 2 | 3 | | x002 | 10 | 20 | 30 | | 日本語 | 1 | 2 | 3 | | かんじ | 10 | 20 | 30 | +--------+---------+---------+---------+ ■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料