[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1. 一般情報

MySQL (R) ソフトウェアによって、非常に高速で堅牢なマルチスレッド形式のマルチユーザ SQLStructured Query Language)データベースサーバが実現します。MySQL サーバは、ミッションクリティカルで負荷が高い運用システムにも、大規模に展開されるソフトウェアへの組み込みにも対応するように設計されています。MySQL は、MySQL AB の商標です。

MySQL ソフトウェアはデュアルライセンス製品です。ユーザは、GNU 一般公衆利用許諾契約書http://www.fsf.org/licenses/ )の条件に基づいてオープンソース/フリーソフトウェア製品として MySQL ソフトウェアを使用することも、MySQL AB から標準の商用ライセンスを購入することもできます。 「1.4 MySQL のサポートとライセンス」 節 参照 。

MySQL の Web サイト(http://www.mysql.com/ )には、MySQL ソフトウェアに関する最新情報が掲載されています。

このマニュアルで特に興味深いセクションは以下のとおりです。

重要:

エラー(多くの場合、バグと呼ばれます)の報告は、質問やコメントと同様に、通常の MySQL メーリングリストにお送りください。 「1.7.1.1 MySQL メーリングリスト」 節 参照 。 「1.7.1.3 バグまたは問題を報告する方法」 節 参照 。

Unix では、mysqlbug スクリプトを使用してバグレポートを生成します(Windows ディストリビューションについては、basedir にファイル `mysqlbug.txt' があります。このファイルをバグレポートのテンプレートとして使用してください)。

ソースディストリビューションについては、mysqlbug スクリプトは `scripts' ディレクトリにあります。バイナリディストリビューションについては、mysqlbug は `bin' ディレクトリ(MySQL サーバ RPM パッケージの場合は `/usr/bin')にあります。

MySQL サーバで重大なセキュリティバグを見つけた場合は、security@mysql.com に電子メールをお送りください。

1.1 このマニュアルについて   
1.2 MySQL データベース管理システムの概要   
1.3 MySQL AB の概要   
1.4 MySQL のサポートとライセンス   
1.5 MySQL の開発ロードマップ   
1.6 MySQL の今後(TODO)   
1.7 MySQL の情報源   
1.8 MySQL の標準への準拠   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.1 このマニュアルについて

これは、MySQL のリファレンスマニュアルです。バージョン 4.1.1-alpha の MySQL について記述しています。機能に関する変更は常に、バージョンに言及して説明しています。そのため、古いバージョンの MySQL ソフトウェア(3.23 または 4.0 製品版など)を使用している場合でも、このマニュアルは参考になります。バージョン 5.0(開発版)のリファレンスもあります。

これはリファレンスマニュアルなので、SQL やリレーショナルデータベースの概念に関する一般的な説明は記載していません。

MySQL データベースソフトウェア は継続して開発が行われているので、マニュアルも頻繁に更新されます。このマニュアルの最新版は、http://www.mysql.com/documentation/ から HTML、PDF、Windows HLP 版などのさまざまな形式で入手することができます。

元の文書は Texinfo ファイルです。HTML 版は、変更された texi2html を使用して自動的に生成されます。プレーンテキスト版と Info 版は、makeinfo を使用して生成されます。PostScript 版は、texi2dvidvips を使用して生成されます。PDF 版は、pdftex を使用して生成されます。

マニュアル内で情報を見つけるのが困難な場合は、http://www.mysql.com/doc/ にある検索可能なバージョンを試してみてください。

このマニュアルへの追加や修正に関する提案は、マニュアルチーム(docs@mysql.com )にお送りください。

このマニュアルは当初、David Axmark と Michael (Monty) Widenius によって執筆されました。現在は、Arjen Lentz、Paul DuBois、および Stefan Hinz で構成される MySQL マニュアルチームによって管理されています。その他多数の貢献者については、 「C. 協力者」 を参照してください。

このマニュアルの著作権(2003)は、スウェーデンの会社 MySQL AB が所有しています。 「1.4.2 MySQL で使用されている著作権とライセンス」 節 参照 。

1.1.1 このマニュアルの表記規則   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.1.1 このマニュアルの表記規則

このマニュアルは、以下の表記規則に従って記載されています。

constant
固定幅フォントは、コマンドの名前やオプション、SQL ステートメント、データベース名、テーブル名、カラム名、C コード、Perl コード、および環境変数に使用する。例:"mysqladmin の動作を確認するには、--help オプションを指定して呼び出す。"

`filename'
引用符で囲まれた固定幅フォントは、ファイル名およびパス名に使用する。例:"ディストリビューションは、`/usr/local/' ディレクトリ下にインストールされる。"

`c'
引用符で囲まれた固定幅フォントは、文字のシーケンスを示す場合にも使用する。例:"ワイルドカードを指定するには、`%' 文字を使用する。"

italic
イタリックフォントは、このように強調する場合に使用する。

boldface
太字フォントは、表の見出しや特に強い強調を表す場合に使用する。

特定のプログラムからコマンドを実行する必要があることを示す場合、コマンドの前にプログラムとプロンプトを記述します。たとえば、shell> はログインシェルから実行するコマンドを示し、mysql>mysql クライアントプログラムから実行するコマンドを示します。

 
shell> シェルコマンド
mysql> mysql コマンド

"シェル" はコマンドインタープリタです。Unix では通常、shcsh などのプログラムです。Windows では、Windows コンソールで通常実行される command.comcmd.exe です。

シェルコマンドは、Bourne シェル構文を使用して表します。csh 形式のシェルを使用している場合は、多少異なるコマンドを発行しなければならないことがあります。たとえば、環境変数を設定し、コマンドを実行するシーケンスは、Bourne シェル構文では次のようになります。

 
shell> VARNAME=value some_command

csh または tcsh の場合は、このシーケンスを次のように実行します。

 
shell> setenv VARNAME value
shell> some_command

データベース名、テーブル名、およびカラム名は多くの場合、コマンドに代入する必要があります。このような代入が必要であることを示す場合、このマニュアルでは db_nametbl_name、および col_name を使用します。たとえば、次のようなステートメントがあるとします。

 
mysql> SELECT col_name FROM db_name.tbl_name;

これは、同様のステートメントを入力する場合、データベース名、テーブル名、およびカラム名を自分で指定することを意味します。たとえば、次のようになります。

 
mysql> SELECT author_name FROM biblio_db.author_list;

SQL キーワードは大文字と小文字を区別しないので、大文字で記述されることも小文字で記述されることもあります。ただし、このマニュアルでは大文字を使用します。

構文の説明で省略可能な単語や節を表す場合、角かっこ(`[' および `]')を使用します。たとえば、次のステートメントでは、IF EXISTS は省略可能です。

 
DROP TABLE [IF EXISTS] tbl_name

構文要素が複数の選択候補で構成される場合、それらの候補を縦線(`|')で区切ります。選択候補のいずれかを選択できる場合は、次のように、それらの候補を角かっこ(`[' および `]')内に列挙します。

 
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

選択候補のいずれかを選択しなければならない場合は、次のように、それらの候補を中かっこ(`{' および `}')内に列挙します。

 
{DESCRIBE | DESC} tbl_name {col_name | wild}


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2 MySQL データベース管理システムの概要

MySQL は最もよく知られているオープンソース SQL データベース管理システムで、MySQL AB によって開発、提供、サポートが行われています。MySQL AB は MySQL の開発者によって創設された営利会社で、MySQL データベース管理システムに関連するサービスを提供することでビジネスを構築しています。 「1.3 MySQL AB の概要」 節 参照 。

MySQL の Web サイト(http://www.mysql.com/ )には、MySQL ソフトウェアと MySQL AB に関する最新情報が掲載されています。

MySQL はデータベース管理システムである。

データベースは、構造化されたデータの集合である。データベースには、簡単なショッピングリストから絵画のギャラリー、または社内ネットワークの膨大な量の情報など、さまざまなものがある。コンピュータデータベースに格納されているデータに対して追加、アクセス、および処理などを行うには、MySQL サーバのようなデータベース管理システムが必要となる。コンピュータは大量のデータの処理に非常に優れているので、データベース管理システムは、スタンドアロンのユーティリティまたは他のアプリケーションの一部として、データ処理の中心的な役割を果たす。

MySQL はリレーショナルデータベース管理システムである。

リレーショナルデータベースでは、1 つの大きな保管領域にすべてのデータが格納されるのではなく、個別のテーブルにデータが格納される。これにより、速度と柔軟性が向上する。"MySQL" の SQL は "Structured Query Language" を表す。SQL はデータベースへのアクセスに使用される最も一般的な標準化言語で、ANSI/ISO SQL 標準によって定義されている(SQL 標準は 1986 年以降開発が繰り返され、複数のバージョンがある。このマニュアルでは、"SQL-92" は 1992 年にリリースされた標準、"SQL-99" は 1999 年にリリースされた標準、"SQL:2003" は 2003 年半ばにリリース予定の標準を表す。"SQL 標準" という用語は、任意の時点における現行バージョンの SQL 標準を表す場合に使用する)。

MySQL ソフトウェアはオープンソースである。

オープンソースとは、だれもがそのソフトウェアを使用し、変更できることを意味する。MySQL ソフトウェアは、だれもが無料でインターネットからダウンロードし、使用することができる。必要に応じて、ソースコードを調べ、ニーズに合わせて変更することができる。MySQL ソフトウェアでは、GPLGNU 一般公衆利用許諾契約書http://www.fsf.org/licenses/ ))に基づいて、さまざまな状況でのソフトウェアの使用において許可されている事項と禁止されている事項が規定されている。GPL では不都合な場合や商用アプリケーションに MySQL コードを組み込む必要がある場合は、商用ライセンス版を購入することができる。 「1.4.3 MySQL ライセンス」 節 参照 。

MySQL データベースサーバを使用するメリット

MySQL データベースサーバ は、非常に高速で信頼性があり、簡単に使用することができる。それを求めていたのなら、ぜひ試していただきたい。また、MySQL サーバには、ユーザと密接に協力して開発された実用的な機能が備わっている。ベンチマークページで、他のデータベース管理システムと MySQL サーバのパフォーマンスを比較することができる。 「5.1.4 MySQL ベンチマークスィート」 節 参照 。

MySQL サーバは当初、既存のソリューションよりもはるかに速く大規模なデータベースを処理することを目的として開発され、多くを要求される運用環境で数年間にわたって使用されている。引き続き開発が行われているが、MySQL サーバは現在、便利で多彩な機能を備えている。その接続性、速度、安全性によって、MySQL サーバはインターネット上のデータベースへのアクセスに非常に適している。

MySQL サーバの技術的な機能

詳細な技術情報については、 「6. MySQL SQL言語リファレンス」 を参照。MySQL データベースソフトウェア は、さまざまなバックエンドをサポートするマルチスレッド形式の SQL サーバ、複数の異なるクライアントプログラムおよびライブラリ、管理ツール、幅広いアプリケーションプログラミングインタフェース(API)から成るクライアント/サーバシステムである。

また、MySQL サーバはアプリケーションへのリンクが可能なマルチスレッドライブラリとして提供されており、さらに小規模で高速な、管理しやすい製品を作り出すことができる。

MySQL をサポートする多数のソフトウェア

必要なアプリケーションや言語ですでに MySQL データベースサーバがサポートされていると思われる。

MySQL の正式な発音は "My Ess Que Ell" ですが("my sequel" ではありません)、"my sequel" と発音したり、ローカライズされた他の方法で発音してもかまいません。

1.2.1 MySQL の歴史   
1.2.2 MySQL の主な機能   
1.2.3 MySQL の安定性   
1.2.4 MySQL テーブルの最大サイズ   
1.2.5 西暦 2000 年対応   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2.1 MySQL の歴史

当初は、高速で低レベルな独自の(ISAM)ルーチンを使用してテーブルに接続するために mSQL を使用するつもりでした。しかし、いくつかのテストを行った結果、mSQL はそれほど高速でも柔軟でもないため、ニーズに合わないという結論に至りました。これが要因となって、私たちのデータベースへの新しい SQL インタフェースを開発することになりました。ただし、mSQL とほとんど同じ API インタフェースを使用することにしました。この API を選択したのは、mSQL で使用するために記述されたサードパーティのコードを MySQL で使用するために簡単に移植できるようにするためです。

MySQL という名前の由来は明らかではありません。当社の基本ディレクトリおよび多数のライブラリやツールには、10 年以上にわたって "my" というプリフィックスが使われています。また、共同創設者 Monty Widenius の娘の名前も My です。そのため、このうちのどちらが MySQL の名前の由来となったのかは、私たちにとってもいまだに謎なのです。

MySQL のイルカ(当社のロゴ)の名前は Sakila です。Sakila は、当社の「イルカのネーミング」コンテストで、ユーザによって提案された膨大な数の名前の中から MySQL AB の創設者が選んだものです。この名前を提案したのは、アフリカのスワジランド出身の Ambrose Twebaze というオープンソースソフトウェアの開発者でした。Ambrose によると、Sakila という名前は、スワジランドの現地語であるシスワティ語にルーツがあるということです。また、Sakila は、Ambrose の出生国であるウガンダに近い、タンザニアのアルーシャにある町の名前でもあります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2.2 MySQL の主な機能

MySQL データベースソフトウェア の重要な特徴の一部を以下で説明します。 「1.5.1 MySQL 4.0 の概要」 節 参照 。

内部および移植性

カラム型

コマンドと関数

セキュリティ

拡張性と範囲

接続性

ローカライズ

クライアントとツール


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2.3 MySQL の安定性

このセクションでは、"MySQL サーバの安定性" と "プロジェクトにおける MySQL サーバの信頼性" という問題を扱います。これらの問題を明らかにし、多数の潜在ユーザに関連する重要な質問に答えます。このセクションに記載されている情報は、問題の特定や使用方法の報告が非常に活発に行われているメーリングリストから収集したデータに基づいています。

元のコードは 1980 年代初期に記述されたもので、安定したコードベースとなっています。また、ISAM テーブル形式には下位互換性が維持されています。MySQL AB の前身である TcX では、1996 年半ば以来、MySQL コードはプロジェクトで問題なく動作していました。MySQL データベースソフトウェア がより広く一般にリリースされるとすぐに、新しいユーザが "テストされていないコード" をいくつか見つけました。それ以降の新しいリリースごとに、移植性に関する問題は少なくなっています(また一方では、新しいリリースごとに多数の新機能が追加されています)。

MySQL サーバの各リリースは常に実用的です。問題が発生するのは、ユーザが "グレーゾーン" のコードを使用しようとしたときだけです。もっとも、新しいユーザはグレーゾーンとは何かを知りません。そのため、このセクションでは、現時点で認識されているその領域を説明します。説明は主に、MySQL サーバのバージョン 3.23 および 4.0 を対象とします。最新バージョンでは、バグセクションに記載されている設計関連のバグを除き、報告されている既知のバグはすべて修正されています。 「1.8.6 MySQL の既知のエラーと設計上の問題」 節 参照 。

MySQL サーバは、複数層の独立したモジュールで構成されています。新しいモジュールの一部とそれらのテストステータスを以下に示します。

レプリケーション -- ガンマ
レプリケーションによる大規模なサーバグループが運用されており、良好な結果を得ている。MySQL 4.x では、拡張されたレプリケーション機能に対する取り組みが引き続き行われている。

InnoDB テーブル -- 安定(3.23.49 以降の 3.23)
InnoDB トランザクションストレージエンジンは、MySQL 3.23 ツリーのバージョン 3.23.49 以降で安定していると宣言されている。InnoDB は、大規模で負荷が高い運用システムで使用されている。

BDB テーブル -- ガンマ
Berkeley DB コードは非常に安定しているが、MySQL サーバでは引き続き BDB トランザクションストレージエンジンインタフェースの改良を行っている。そのため、他のテーブル型のように十分にテストされるにはしばらく時間が必要である。

全文検索 -- ベータ
全文検索は動作するが、まだ広範には使用されていない。MySQL 4.0 には、重要な拡張機能が実装されている。

MyODBC 3.51 (ODBC SDK 3.51 を使用) -- 安定
広く運用されている。ODBC ドライバや基盤となっているデータベースサーバとは無関係の、アプリケーションに関連していると思われる問題が発生している。

MyISAM テーブルの自動リカバリ -- ガンマ
このステータスは、MyISAM ストレージエンジンの新しいコードのみに該当する。このコードでは、テーブルを開く際に、前にそのテーブルが正しく閉じられたかどうかがチェックされ、正しく閉じられていない場合はテーブルの自動チェック/修復が実行される。

一括挿入 -- アルファ
多数のレコードをより速く挿入するための MySQL 4.0 における MyISAM テーブルの新機能である。

ロック -- ガンマ
これはシステム依存である。一部のシステムでは、オペレーティングシステム標準のロック(fcntl())を使用することに大きな問題がある。このような場合、--skip-external-locking フラグを指定して mysqld を実行する必要がある。問題は、一部の Linux システムと、NFS によってマウントされたファイルシステム使用時の SunOS で発生することが確認されている。

MySQL AB では、高品質のサポートを有料でお客様に提供しております。また、だれもが質問することができるコミュニティリソースとして MySQL メーリングリストを提供しております。

バグは通常、パッチによって至急修正されます。重大なバグについては、ほとんどの場合、新しいリリースが提供されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2.4 MySQL テーブルの最大サイズ

MySQL バージョン 3.22 では、テーブルのサイズは 4 GB(4 ギガバイト)に制限されていました。MySQL バージョン 3.23 の MyISAM テーブル型では、テーブルの最大サイズが 800万テラバイト(2^63 バイト)に増えました。有効なテーブルのサイズがこのように大きくなったことで、現在では、MySQL データベースに効果的なテーブルの最大サイズは通常、MySQL 内部の制限ではなく、オペレーティングシステムのファイルサイズに関する制限によって決まります。

次の表は、オペレーティングシステムのファイルサイズに関する制限の例を示しています。

オペレーティングシステム ファイルサイズの制限
Linux-Intel 32-bit 2 GB、LFS 使用の場合はそれ以上
Linux-Alpha 8 TB(?)
Solaris 2.5.1 2 GB(パッチにより 4GB まで可)
Solaris 2.6 4 GB(フラグにより変更可能)
Solaris 2.7 Intel 4 GB
Solaris 2.7 UltraSPARC 512 GB

Linux 2.2 では、ext2 ファイルシステム用の LFS パッチを使用することで、2 GB より大きいサイズのテーブルを使用することができます。また、Linux 2.4 には ReiserFS および ext3 が組み込まれており、これらを使用することで大きいファイルがサポートされます。現在の Linux ディストリビューションのほとんどはカーネル 2.4 に基づいており、必要な Large File Support(LFS)パッチすべてがすでに組み込まれています。しかし、それでも、有効な最大ファイルサイズはいくつかの要因によって左右されます。そのうちの 1 つが、MySQL テーブルを格納するために使用されるファイルシステムです。

Linux における LFS の詳細については、Andreas Jaeger の「Large File Support in Linux」(http://www.suse.de/~aj/linux_lfs.html )を参照してください。

デフォルトでは、MySQL では有効な最大サイズが約 4 GB の内部構造を持つ MyISAM テーブルが作成されます。SHOW TABLE STATUS コマンドまたは myisamchk -dv table_name を使用して、テーブルの最大サイズをチェックすることができます。 「4.6.8 SHOW 構文」 節 参照 。

4 GB より大きいサイズのテーブルが必要な場合(オペレーティングシステムで大規模ファイルがサポートされていれば)、CREATE TABLE ステートメントで AVG_ROW_LENGTH および MAX_ROWS オプションを指定することができます。4 GB を超えるテーブルを作成するには、これらのオプションを使用してください。 「6.5.3 CREATE TABLE 構文」 節 参照 。また、ALTER TABLE を使用して、後でこれらのオプションを設定することもできます。 「6.5.4 ALTER TABLE 構文」 節 参照 。

MyISAM テーブルのファイルサイズに関する制限に対処する方法として、他に次のような方法があります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.2.5 西暦 2000 年対応

MySQL サーバ自体は、西暦 2000 年(Y2K)対応に関しては何の問題もありません。

次の簡単な例で、MySQL サーバに 2030 年までの日付に関する問題がないことを示します。

 
mysql> DROP TABLE IF EXISTS y2k;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE y2k (date DATE,
    ->                   date_time DATETIME,
    ->                   time_stamp TIMESTAMP);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO y2k VALUES
    -> ("1998-12-31","1998-12-31 23:59:59",19981231235959),
    -> ("1999-01-01","1999-01-01 00:00:00",19990101000000),
    -> ("1999-09-09","1999-09-09 23:59:59",19990909235959),
    -> ("2000-01-01","2000-01-01 00:00:00",20000101000000),
    -> ("2000-02-28","2000-02-28 00:00:00",20000228000000),
    -> ("2000-02-29","2000-02-29 00:00:00",20000229000000),
    -> ("2000-03-01","2000-03-01 00:00:00",20000301000000),
    -> ("2000-12-31","2000-12-31 23:59:59",20001231235959),
    -> ("2001-01-01","2001-01-01 00:00:00",20010101000000),
    -> ("2004-12-31","2004-12-31 23:59:59",20041231235959),
    -> ("2005-01-01","2005-01-01 00:00:00",20050101000000),
    -> ("2030-01-01","2030-01-01 00:00:00",20300101000000),
    -> ("2050-01-01","2050-01-01 00:00:00",20500101000000);
Query OK, 13 rows affected (0.01 sec)
Records: 13  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM y2k;
+------------+---------------------+----------------+
| date       | date_time           | time_stamp     |
+------------+---------------------+----------------+
| 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 |
| 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 |
| 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 |
| 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 |
| 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 |
| 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 |
| 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 |
| 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 |
| 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 |
| 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 |
| 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 |
| 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
| 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 |
+------------+---------------------+----------------+
13 rows in set (0.00 sec)

TIMESTAMP 型のカラムの最後の値がゼロになっているのは、最後の年(2050)が TIMESTAMP の上限を超えているためです。TIMESTAMP データ型は現在の時刻を格納するために使用され、32 ビットマシンでは 19700101000000 から 20300101000000 までの値(符号付きの値)をサポートします。64 ビットマシンでは、2106 までの値(符号なしの値)を処理します。

この例は、DATE および DATETIME データ型にも日付の使用に関する問題がないことを示しています。これらのデータ型では、9999 年までの日付が処理されます。

MySQL サーバ自体は Y2K に対応していますが、Y2K に対応していないアプリケーションとともに使用すると、問題が発生することがあります。たとえば、多くの古いアプリケーションでは、4 桁の値ではなく、あいまいな 2 桁の値を使用して年の格納や処理が行われます。この問題は、値が "ない" ことを示す場合に 0099 などの値を使用するアプリケーションでは、さらに複雑になる可能性があります。それぞれのアプリケーションはさまざまなプログラマによって記述されており、プログラマごとに異なる規則や日付処理関数を使用している可能性があるので、これらの問題を修正するのは困難な場合があります。

そのため、MySQL サーバに Y2K 問題がなくても、アプリケーションとしてあいまいでない情報を提供することが必要です。年を表す 2 桁の値を含むあいまいな日付入力データの処理に関する MySQL サーバのルールについては、 「6.2.2.1 西暦 2000 年問題と日付型」 を参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3 MySQL AB の概要

MySQL ABMySQL の創始者と主な開発者の会社で、最初は David Axmark、Allan Larsson、および Michael "Monty" Widenius によってスウェーデンに創設されました。

MySQL サーバの開発者はすべて、当社の従業員です。当社は、世界中の多数の国の人々から成るバーチャルな組織です。毎日ネットを使って相互に、またはユーザ、サポータ、およびパートナと広くコミュニケーションを図っています。

当社は、MySQL ソフトウェアの開発と新しいユーザへの当社のデータベースの普及に専念しております。MySQL AB は、MySQL のソースコード、MySQL のロゴと商標、およびこのマニュアルの著作権を所有しています。 「1.2 MySQL データベース管理システムの概要」 節 参照 。

1.3.1 MySQL AB のビジネスモデルとサービス   
1.3.2 問い合わせ先   

MySQL の本質的価値が、MySQL およびオープンソースへの当社の献身を示しています。

当社は、MySQL データベースソフトウェア が次のようなものであることを願っています。

MySQL ABMySQL AB の従業員は、以下のことを心がけています。

MySQL の Web サイト(http://www.mysql.com/ )には、MySQLMySQL AB に関する最新情報が掲載されています。

会社名の "AB" の部分は、スウェーデン語の "aktiebolag"、つまり "株式会社" の頭字語です。したがって、"MySQL 株式会社" という意味です。実際、MySQL AB の子会社として、MySQL Inc. や MySQL GmbH などがあります。これらの子会社はそれぞれ、アメリカとドイツにあります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1 MySQL AB のビジネスモデルとサービス

当社に最もよく寄せられる質問の 1 つが "製品を無償で提供してどのように採算をとっているのですか?" というものです。これに対する回答は次のとおりです。

MySQL AB は、サポート、サービス、商用ライセンス、およびロイヤルティで利益を上げています。当社では、これらの収益を製品開発や MySQL ビジネスの拡大に充てています。

1.3.1.1 サポート   
1.3.1.2 トレーニングと検定   
1.3.1.3 コンサルティング   
1.3.1.4 商用ライセンス   
1.3.1.5 パートナ提携   

当社は、創設以来、常に利益を上げています。2001 年 10 月には、代表的な北欧の投資家と何人かの資金援助者から事業投資を受けました。この投資は、当社のビジネスモデルを固め、継続的な成長の基盤を確立するために使われています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1.1 サポート

MySQL AB は、MySQL データベースの創始者と主な開発者が所有し、経営しています。開発者は、お客様やその他のユーザのニーズや問題を常に把握しておくために、サポートの提供に取り組んでいます。当社のサポートはすべて、経験豊富な開発者によって提供されます。実際、難しい質問には、MySQL サーバの最も重要な作成者である Michael Monty Widenius が回答します。 「1.4.1 MySQL AB によって提供されるサポート」 節 参照 。

詳細とさまざまなレベルのサポートの申し込みについては、http://www.mysql.com/support/ を参照するか、当社の販売スタッフ(sales@mysql.com )にお問い合わせください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1.2 トレーニングと検定

MySQL AB は、MySQL 関連のトレーニングを世界中で実施しています。当社では、オープンコースと企業固有のニーズに合わせた社内トレーニング用コースの両方を用意しております。また、当社のパートナである MySQL 認定トレーニングセンターによる MySQL トレーニングもあります。

当社のトレーニング教材には、当社のマニュアルで使用されているものと同じサンプルデータベースやサンプルアプリケーションが使用されています。また、教材は最新版の MySQL を反映するように常に更新されています。さらに、当社の講師は開発チームによってサポートされているため、トレーニングの質とコース教材の継続的な開発を保証いたします。また、トレーニング中に発生した質問には必ずお答えします。

トレーニングコースに参加することで、MySQL アプリケーションの目標を達成することができます。さらに、以下のことを実現することができます。

受講者として、またはトレーニングパートナとして当社のトレーニングに関心をお持ちの方は、トレーニングセクション(http://www.mysql.com/training/ )を参照するか、当社(training@mysql.com )にお問い合わせください。

MySQL 検定プログラムの詳細については、http://www.mysql.com/certification/ を参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1.3 コンサルティング

MySQL AB とその認定パートナは、世界中の MySQL サーバユーザおよび独自のソフトウェアに MySQL サーバを組み込むユーザにコンサルティングサービスを提供しています。

当社のコンサルタントは、データベースの設計と調整、効率的なクエリの作成、最適なパフォーマンスを確保するためのプラットフォームの調整、移行に関する問題の解決、レプリケーションの設定、堅牢なトランザクションアプリケーションの構築などをお手伝いします。また、大規模展開を目的として、独自の製品やアプリケーションに MySQL サーバを組み込むお客様のお手伝いもいたします。

当社のコンサルタントは、開発チームと密接に協力しています。そのため、専門的なサービスの技術的な品質を保証いたします。コンサルティングは、2 日間のパワースタートセッションから、何週間、何か月にもわたるプロジェクトまでさまざまです。当社の専門家は、MySQL サーバだけを扱うわけではありません。PHP や Perl などのプログラミング言語およびスクリプト言語についても対応します。

コンサルティングサービスおよびコンサルティングパートナに関心をお持ちの方は、当社の Web サイトのコンサルティングセクション(http://www.mysql.com/consulting/ )を参照するか、コンサルティングスタッフ(consulting@mysql.com )にお問い合わせください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1.4 商用ライセンス

MySQL データベースは、GNU 一般公衆利用許諾契約書GPL)に基づいてリリースされています。つまり、MySQL ソフトウェアは、GPL の下、無償で使用することができます。ただし、GPL の条件(アプリケーションも GPL に基づいていなければならないという要件など)に拘束されたくない場合は、MySQL AB から同じ製品の商用ライセンスを購入することができます。http://www.mysql.com/products/pricing.html を参照してください。MySQL ABMySQL のソースコードの著作権を所有しているので、デュアルライセンスを採用して、GPL および商用ライセンスの下で同じ製品を提供することができます。これにより、オープンソースへの MySQL AB の取り組みに影響が生じることはありません。商用ライセンスが必要な場合の詳細については、 「1.4.3 MySQL ライセンス」 を参照してください。

当社は、MySQL サーバに価値を追加するサードパーティのオープンソース GPL ソフトウェアの商用ライセンスも販売しております。わかりやすい例として、ACID サポート、行レベルのロック、クラッシュリカバリ、マルチバージョニング、外部キーサポートなどを提供する InnoDB トランザクションストレージエンジンがあります。 「7.5 InnoDB テーブル」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.1.5 パートナ提携

MySQL AB には、トレーニングコース、コンサルティングとサポート、出版、MySQL および関連製品の再販と提供を扱う世界的なパートナプログラムがあります。MySQL AB パートナは Web サイト(http://www.mysql.com/ )で公開されるとともに、個々の製品を区別し、ビジネスを促進するために特殊なバージョンの MySQL の商標を使用する権利を得られます。

MySQL AB パートナに関心をお持ちの方は、partner@mysql.com に電子メールをお送りください。

MySQL という言葉と MySQL のイルカのロゴは、MySQL AB の商標です。 「1.4.4 MySQL AB のロゴと商標」 節 参照 。これらの商標は、MySQL の創始者が何年にもわたって築いてきた意義深い価値を表しています。

MySQL の Web サイト(http://www.mysql.com/ )は、開発者やユーザによく知られています。2001 年 10 月には、1,000 万回のページアクセスがありました。当社の Web サイトへの訪問者は、ソフトウェアとハードウェアの両方について購入の決定と推奨を行うグループです。訪問者の 12% が正式に購入を決定し、購入の決定にまったく関連しないのはわずか 9% です。65% を超える訪問者が過去半年以内に 1 件以上のオンライン取り引きを行ったことがあり、70% の訪問者はその後数か月内に取り引きを予定しています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.3.2 問い合わせ先

MySQL の Web サイト(http://www.mysql.com/ )には、MySQLMySQL AB に関する最新情報が掲載されています。

当社のニュースリリース(http://www.mysql.com/news/ )に掲載されていないプレス関連のサービスや質問については、press@mysql.com に電子メールをお送りください。

MySQL AB と有効なサポート契約を結んでいる方は、MySQL ソフトウェアに関する技術的な質問に対する明確な回答をタイムリーに得ることができます。詳細については、 「1.4.1 MySQL AB によって提供されるサポート」 を参照してください。または、Web サイトの http://www.mysql.com/support/ を参照するか、sales@mysql.com に電子メールをお送りください。

MySQL トレーニングについては、トレーニングセクション(http://www.mysql.com/training/ )を参照してください。インターネットにアクセスできない場合は、MySQL AB のトレーニングスタッフ(training@mysql.com )に電子メールでお問い合わせください。 「1.3.1.2 トレーニングと検定」 節 参照 。

MySQL 検定プログラムについては、http://www.mysql.com/certification/ を参照してください。 「1.3.1.2 トレーニングと検定」 節 参照 。

コンサルティングに関心をお持ちの方は、Web サイトのコンサルティングセクション(http://www.mysql.com/consulting/ )を参照してください。インターネットにアクセスできない場合は、MySQL AB のコンサルティングスタッフ(consulting@mysql.com )に電子メールでお問い合わせください。 「1.3.1.3 コンサルティング」 節 参照 。

https://order.mysql.com/ では、商用ライセンスをオンラインで購入することができます。また、MySQL AB に FAX で購入申込書を送信する方法を参照することもできます。ライセンスの詳細については、http://www.mysql.com/products/pricing.html を参照してください。ライセンスに関する質問がある場合やハイボリュームライセンス契約の見積もりが必要な場合は、Web サイト(http://www.mysql.com/ )にある問い合わせ用紙に記入するか、licensing@mysql.com (ライセンスに関する質問)または sales@mysql.com (販売見積もり)に電子メールをお送りください。 「1.4.3 MySQL ライセンス」 節 参照 。

MySQL AB とのパートナ提携に関心をお持ちの企業は、partner@mysql.com に電子メールをお送りください。 「1.3.1.5 パートナ提携」 節 参照 。

MySQL の商標ポリシーの詳細については、http://www.mysql.com/company/trademark.html を参照するか、trademark@mysql.com に電子メールをお送りください。 「1.4.4 MySQL AB のロゴと商標」 節 参照 。

採用セクション(http://www.mysql.com/company/jobs/ )に掲載されている MySQL AB の職種に関心をお持ちの方は、jobs@mysql.com に電子メールをお送りください。履歴書は、添付ファイルとして送信するのではなく、電子メールメッセージの最後にプレーンテキスト形式で記載してください。

多数のユーザ間の一般的なディスカッションについては、該当するメーリングリストを参照してください。 「1.7.1 MySQL メーリングリスト」 節 参照 。

エラー(多くの場合、バグと呼ばれます)の報告は、質問やコメントと同様に、通常の MySQL メーリングリストにお送りください。 「1.7.1.1 MySQL メーリングリスト」 節 参照 。MySQL サーバで重大なセキュリティバグを見つけた場合は、security@mysql.com に電子メールをお送りください。 「1.7.1.3 バグまたは問題を報告する方法」 節 参照 。

公開可能なベンチマーク結果をお持ちの方は、benchmarks@mysql.com に電子メールでお問い合わせください。

このマニュアルへの追加や修正に関する提案については、マニュアルチーム(docs@mysql.com )に電子メールをお送りください。

MySQL の Web サイト(http://www.mysql.com/ )の運営や内容に関する質問やコメントについては、webmaster@mysql.com に電子メールをお送りください。

MySQL AB にはプライバシーポリシーがあります。http://www.mysql.com/company/privacy.html を参照してください。このポリシーに関する質問については、privacy@mysql.com に電子メールをお送りください。

その他の質問についてはすべて、info@mysql.com に電子メールをお送りください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4 MySQL のサポートとライセンス

このセクションでは、MySQL のサポートおよびライセンスに関する取り決めについて説明します。

1.4.1 MySQL AB によって提供されるサポート   
1.4.2 MySQL で使用されている著作権とライセンス   
1.4.3 MySQL ライセンス   
1.4.4 MySQL AB のロゴと商標   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.1 MySQL AB によって提供されるサポート

MySQL AB からのテクニカルサポートでは、MySQL データベースエンジンをコード化するソフトウェアエンジニアからお客様個々の問題に応じた回答が提供されます。

当社は、テクニカルサポートを広く、包括的にとらえます。お客様にとって重要な MySQL ソフトウェアに関するほとんどの問題は、当社にとっても重要です。ユーザは通常、さまざまなコマンドやユーティリティを使用する方法、パフォーマンスボトルネックを除去する方法、クラッシュしたシステムをリストアする方法、MySQL に対するオペレーティングシステムやネットワークの影響を理解する方法、バックアップおよびリカバリに関するベストプラクティスを設定する方法、API を利用する方法などについてのヘルプを必要としています。当社のサポートは、できる限りのお手伝いをすることを心がけていますが、MySQL サーバと独自のユーティリティのみを対象とし、MySQL サーバにアクセスするサードパーティ製品は対象としておりません。

さまざまなサポートオプションの詳細については、http://www.mysql.com/support/ を参照してください。ここでは、サポート契約をオンラインで申し込むこともできます。インターネットにアクセスできない場合は、販売スタッフ(sales@mysql.com )に電子メールでお問い合わせください。

テクニカルサポートは生命保険のようなものです。生命保険がなくても何年間も快適に暮らせますが、そのときがくれば、非常に重要になります。しかし、それから保険に入ったのでは遅すぎるのです。重要なアプリケーションに MySQL サーバを使用している場合、問題が突然発生したときに、自分だけですべてを解決するのは非常に時間がかかります。そのような場合、MySQL AB で採用している経験豊富な MySQL のトラブルシューティング担当者への直接のアクセスが必要になることがあります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.2 MySQL で使用されている著作権とライセンス

MySQL AB は、MySQL のソースコード、MySQL のロゴと商標、およびこのマニュアルの著作権を所有しています。 「1.3 MySQL AB の概要」 節 参照 。MySQL ディストリビューションには、さまざまなライセンスが関連しています。

  1. サーバ、mysqlclient ライブラリ、クライアント、および GNU readline ライブラリ内の MySQL 固有のソースはすべて、GNU 一般公衆利用許諾契約書の対象である。 「H. GNU General Public License」 節 参照 。このライセンスのテキストは、ディストリビューションのファイル `COPYING' にある。

  2. GNU getopt ライブラリは、GNU 劣等一般公衆利用許諾契約書の対象である。http://www.fsf.org/licenses/ を参照。

  3. ソース(regexp ライブラリ)の一部は、Berkeley スタイルの著作権の対象である。

  4. MySQL の古いバージョン(3.22 以前)には、さらに厳密なライセンス(http://www.mysql.com/products/mypl.html )が適用される。個々のバージョンのマニュアルを参照。

  5. MySQL のリファレンスマニュアルは現在、GPL スタイルのライセンス下では提供されていない。このマニュアルの使用には、以下の条件が適用される。 詳細や翻訳に関心をお持ちの方は、docs@mysql.com に電子メールをお送りください。

MySQL ライセンスの施行については、 「1.4.3 MySQL ライセンス」 を参照してください。 「1.4.4 MySQL AB のロゴと商標」 も参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.3 MySQL ライセンス

MySQL ソフトウェアは、最もよく知られていると思われるオープンソースライセンスである GNU 一般公衆利用許諾契約書GPL)に基づいてリリースされています。GPL ライセンスの正式な条件については、http://www.fsf.org/licenses/ を参照してください。http://www.fsf.org/licenses/gpl-faq.html および http://www.gnu.org/philosophy/enforcing-gpl.html も参照してください。

MySQL ソフトウェアは GPL に基づいてリリースされているので、多くの場合、無償で使用することができます。ただし、特定の用途については、https://order.mysql.com/MySQL AB から商用ライセンスを購入しなければならない場合があります。詳細については、http://www.mysql.com/products/licensing.html を参照してください。

MySQL の古いバージョン(3.22 以前)には、さらに厳密なライセンス(http://www.mysql.com/products/mypl.html )が適用されます。個々のバージョンのマニュアルを参照してください。

商用ライセンス、GPL、または古い MySQL ライセンスに基づいて MySQL ソフトウェアを使用しても、MySQL AB の商標を使用する権利が自動的に与えられるわけではないことに注意してください。 「1.4.4 MySQL AB のロゴと商標」 節 参照 。

1.4.3.1 商用ライセンスに基づく MySQL ソフトウェアの使用   
1.4.3.2 GPL に基づく MySQL ソフトウェアの無償使用   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.3.1 商用ライセンスに基づく MySQL ソフトウェアの使用

GPL ライセンスは、プログラムが GPL プログラムにリンクしている場合、作成された製品のすべての部分のソースコードもすべて GPL に基づいてリリースする必要があるという意味で、伝染性があります。この GPL 要件に従わない場合、ライセンス条件に違反することとなり、GPL プログラムを使用する権利をすべて失います。また、損害を受ける危険を冒すことにもなります。

以下のような場合、商用ライセンスが必要です。

ライセンスを要求する場合、MySQL ソフトウェアの各インストールに 1 つずつ必要です。これは、1 台のマシン上の CPU の数には関係ありません。また、サーバに接続するクライアントの数に理論上の制限はありません。

商用ライセンスについては、当社の Web サイト(http://www.mysql.com/products/licensing.html )を参照してください。サポート契約については、http://www.mysql.com/support/ を参照してください。特殊なニーズがある場合やインターネットにアクセスできない場合は、販売スタッフ(sales@mysql.com )に電子メールでお問い合わせください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.3.2 GPL に基づく MySQL ソフトウェアの無償使用

GPL の条件に従っている場合、GPL の下で MySQL ソフトウェアを無償で使用することができます。GPL に関する一般的な質問に対する回答などの詳細については、Free Software Foundation の一般的な FAQ(http://www.fsf.org/licenses/gpl-faq.html )を参照してください。一般に、以下のような場合に GPL を使用します。

MySQL データベースソフトウェアの使用に商用ライセンスが不要な場合でも、MySQL AB からサポートを購入することをお勧めします。これにより、MySQL の開発に貢献することになるとともに、お客様自身も直接メリットが得られます。 「1.4.1 MySQL AB によって提供されるサポート」 節 参照 。

MySQL データベースソフトウェアの使用によって利益を得るような商用コンテキストで MySQL データベースソフトウェアを使用する場合は、いずれかのレベルのサポートを購入することで MySQL ソフトウェアの開発のお手伝いをお願いしています。MySQL データベースがお客様のビジネスに役立っているのなら、今度はお客様が MySQL AB に手を貸してください(そうでないと、サポートに関する質問をする場合、多くの労力を要した成果を無償で使用しているだけでなく、当社に無償でサポートを提供するように依頼していることにもなります)。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4 MySQL AB のロゴと商標

Web サイト、書籍、またはボックス製品に MySQL AB のイルカのロゴを掲載したいという MySQL データベースユーザが多数いらっしゃいます。当社はこれを歓迎し、推奨しておりますが、MySQL という言葉と MySQL のイルカのロゴは MySQL AB の商標であり、http://www.mysql.com/company/trademark.html に記載されている当社の商標ポリシーに従って使用する必要があることに注意してください。

1.4.4.1 MySQL のオリジナルロゴ   
1.4.4.2 書面による許可なしに使用できる MySQL のロゴ   
1.4.4.3 MySQL のロゴの使用に書面による許可が必要な場合   
1.4.4.4 MySQL AB のパートナシップロゴ   
1.4.4.5 印刷テキストまたはプレゼンテーションにおける MySQL という言葉の使用   
1.4.4.6 企業名および製品名における MySQL という言葉の使用   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.1 MySQL のオリジナルロゴ

MySQL のイルカのロゴは、2001 年にフィンランドの広告代理店 Priority によってデザインされたものです。頭がよく、敏捷でスリムな動物なので、データの大海原を楽々と進むということから、MySQL データベースに適したシンボルとしてイルカが選ばれました。また、私たちもイルカが好きでした。

MySQL のオリジナルロゴを使用できるのは、MySQL AB の代表者と、書面による合意によって使用が許可されたユーザのみです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.2 書面による許可なしに使用できる MySQL のロゴ

当社は、Web サイト(http://www.mysql.com/press/logos.html )からダウンロードし、MySQL AB からの書面による許可なしにサードパーティの Web サイトで使用できる特殊な条件付き使用ロゴをデザインしております。これらのロゴの使用にはまったく制限はありませんが、名前のとおり、当社の商標ポリシーが適用されます。商標ポリシーも、Web サイトで参照することができます。ロゴを使用する場合は、商標ポリシーをよくお読みください。基本的な条件は以下のとおりです。

ニーズに合わせた特別な調整に関する質問については、trademark@mysql.com に電子メールでお問い合わせください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.3 MySQL のロゴの使用に書面による許可が必要な場合

以下の場合、MySQL のロゴを使用するには、MySQL AB からの書面による許可が事前に必要となります。

法律上および商業上の理由から、当社は、製品や書籍などにおける MySQL の商標の使用を監視します。通常、商用製品に MySQL AB のロゴを掲載する場合には料金をいただきます。収益の一部が MySQL データベースの今後の開発資金として使用されるのが適切だと考えるためです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.4 MySQL AB のパートナシップロゴ

MySQL のパートナシップロゴを使用できるのは、MySQL AB と書面によるパートナシップ契約を結んでいる企業および個人のみです。パートナシップには、MySQL の講師またはコンサルタントとしての認定も含まれます。詳細については、 「1.3.1.5 パートナ提携」 を参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.5 印刷テキストまたはプレゼンテーションにおける MySQL という言葉の使用

MySQL ABMySQL データベースの参照を歓迎しますが、MySQL という言葉は MySQL AB の商標であることに注意してください。そのため、テキスト内で MySQL という言葉を最初に使用する箇所や最も目立つように使用する箇所には商標記号(TM)を添え、必要に応じて、MySQLMySQL AB の商標であることを記載する必要があります。詳細については、商標ポリシー(http://www.mysql.com/company/trademark.html )を参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.4.4.6 企業名および製品名における MySQL という言葉の使用

製品名、企業名、またはインターネットドメイン名に MySQL という言葉を使用する場合は、MySQL AB からの書面による許可が必要です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5 MySQL の開発ロードマップ

このセクションでは、MySQL 4.0、4.1、5.0、および 5.1 で実装または計画されている主な機能を含む、MySQL の開発ロードマップのスナップショットを提供します。バージョンシリーズごとの情報については、以下のセクションを参照してください。次の表は、最も要望があった機能の一部についての計画をまとめたものです。

機能 MySQL バージョン
UNION 4.0
サブクエリ 4.1
R-tree 4.1(MyISAM テーブル用)
ストアドプロシージャ 5.0
ビュー 5.0 または 5.1
カーソル 5.0
外部キー 5.1(InnoDBについては 3.23 で実装済み)
トリガ 5.1
Full OUTER JOIN 5.1
制約 5.1

1.5.1 MySQL 4.0 の概要   
1.5.2 MySQL 4.1 の概要   
1.5.3 MySQL 5.0、次期開発リリース   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.1 MySQL 4.0 の概要

ユーザが長い間待ち望んでいた MySQL サーバ 4.0 が運用ステータスで使用可能になりました。

MySQL 4.0 は、http://www.mysql.com/ および当社のミラーからダウンロードすることができます。MySQL 4.0 は多数のユーザによってテストされ、多数の大規模サイトで運用されています。

MySQL サーバ 4.0 の主な新機能は、当社の既存のビジネスおよびコミュニティユーザ向けに設計されており、ミッションクリティカルで負荷が高いデータベースシステムに対応したソリューションとして MySQL データベースソフトウェアを拡張します。組み込みデータベースのユーザを対象とした新機能もあります。

MySQL 4.0 は、2003 年 3 月にリリースされたバージョン 4.0.12 で、運用について安定していると宣言されました。そのため、今後、4.0 シリーズについてはバグ修正のみが行われ、古い 3.23 シリーズについては重大なバグ修正のみが行われることになります。 「2.5.2 バージョン 3.23 から 4.0 へのアップグレード」 節 参照 。

すでに使用可能な MySQL 4.1(アルファバージョン)には、MySQL ソフトウェアの新機能が追加されます。 「1.5.2 MySQL 4.1 の概要」 節 参照 。

1.5.1.1 MySQL 4.0 で使用可能な機能   
1.5.1.2 組み込み MySQL サーバ   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.1.1 MySQL 4.0 で使用可能な機能

速度の向上

組み込み MySQL サーバの導入

標準としての InnoDB ストレージエンジン

新機能

標準への準拠、移植性、および移行

国際化

使いやすさの向上
新しいユーザ向けの機能を実装するプロセスでも、既存のユーザの忠実なコミュニティからの要望を忘れることはありません。

このマニュアルのニュースセクションに、機能の詳細な一覧があります。 「D.3 Changes in release 4.0.x (Production)」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.1.2 組み込み MySQL サーバ

libmysqld によって、MySQL サーバはアプリケーションの大規模展開に対応します。組み込み MySQL サーバライブラリを使用すると、さまざまなアプリケーションや電子機器に MySQL サーバを組み込むことができます。それらのアプリケーションや電子機器のエンドユーザには、実際はそれらの基になっているデータベースがあるということはわかりません。組み込み MySQL サーバは、インターネット機器、パブリックキオスク、ハードウェアとソフトウェアが組み合わさったターンキー装置、高性能インターネットサーバ、CD-ROMで配布されている独立言語型データベースなどの背後での使用に最適です。

libmysqld の多くのユーザは、MySQL のデュアルライセンスの恩恵を受けます。GPL に拘束されたくないユーザは、商用ライセンスに基づいてソフトウェアを使用することもできます。組み込み MySQL ライブラリでは通常のクライアントライブラリと同じインタフェースが使用されているので、使いやすく、便利です。 「11.1.15 組み込み MySQL サーバライブラリ libmysqld」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.2 MySQL 4.1 の概要

MySQL サーバ 4.0 は、サブクエリや Unicode などの新機能(バージョン 4.1 で実装)および SQL-99 ストアドプロシージャの開発(バージョン 5.0 で実装)の基礎となっています。これらの機能は、当社のお客様からの要望が最も高いものです。

これらの追加機能によって、MySQL データベースサーバの批評家は、MySQL データベース管理システムの問題を指摘する際に、これまで以上に想像力が必要になります。その安定性、速度、使いやすさですでによく知られている MySQL サーバは、非常に多くを望む購入者の条件リストを満たすことができます。

1.5.2.1 MySQL 4.1 で使用可能な機能   
1.5.2.2 段階的ロールアウト   
1.5.2.3 即時の開発用途への対応   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.2.1 MySQL 4.1 で使用可能な機能

このセクションに記載されている機能は、MySQL 4.1 に実装されています。MySQL 4.1 には、他にも計画されている機能があります。 「1.6.1 4.1 で計画されている新機能」 節 参照 。

ストアドプロシージャなど、コード化されるほとんどの新機能は MySQL 5.0 で使用できるようになります。 「1.6.2 5.0 で計画されている新機能」 節 参照 。

サブクエリと派生テーブルのサポート

速度の向上

新機能

標準への準拠、移植性、および移行

国際化

使いやすさの向上

このマニュアルのニュースセクションに、機能の詳細な一覧があります。 「D.2 Changes in release 4.1.x (Alpha)」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.2.2 段階的ロールアウト

MySQL 4.1 には、新しい機能が追加されます。アルファバージョンは、すでにダウンロードすることができます。 「1.5.2.3 即時の開発用途への対応」 節 参照 。

バージョン 4.1 に追加される機能は、ほとんど確定しています。すでに、バージョン 5.0 に向けて新たな開発が行われています。MySQL 4.1 はアルファ(さらに新機能が追加/変更される可能性がある段階)、ベータ(機能が固定され、バグ修正のみが行われる段階)、ガンマ(製品版としてのリリースを数週間後に控えた段階)というステップをたどります。このプロセスの最後に、MySQL 4.1 は新しい製品版となります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.2.3 即時の開発用途への対応

現在、MySQL 4.1 はアルファ段階にあり、http://www.mysql.com/downloads/mysql-4.1.html でバイナリリリースをダウンロードすることができます。すべてのバイナリリリースは、テストするプラットフォームでエラーが発生することなく、一連の広範なテストに合格しています。 「D.2 Changes in release 4.1.x (Alpha)」 節 参照 。

MySQL 4.1 の最新の開発ソースの使用を希望するユーザのために、4.1 BitKeeper リポジトリを公開しています。 「2.3.4 開発ソースツリーからのインストール」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.5.3 MySQL 5.0、次期開発リリース

MySQL の新たな開発は、ストアドプロシージャなどの新機能を特徴とする 5.0 リリースに焦点が置かれています。 「1.6.2 5.0 で計画されている新機能」 節 参照 。

MySQL 開発の最前線の参照を希望するユーザのために、MySQL バージョン 5.0 の BitKeeper リポジトリを公開しています。 「2.3.4 開発ソースツリーからのインストール」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6 MySQL の今後(TODO)

1.6.1 4.1 で計画されている新機能   
1.6.2 5.0 で計画されている新機能   
1.6.3 5.1 で計画されている新機能   
1.6.4 近い将来に計画されている新機能   
1.6.5 中期的な将来に計画されている新機能   
1.6.6 計画されていない新機能   

このセクションでは、MySQL サーバに実装予定の機能の概要を説明します。一覧はバージョンごとに分かれており、項目はほぼ、実装される順序に並んでいます。

注意: 特定の機能を至急必要とする企業レベルのユーザは、支援オプションについて sales@mysql.com にお問い合わせください。スポンサー企業からの特定の目的に絞った資金提供によって、その目的のために特別なリソースを割り当てることができます。過去に資金提供を受けた機能の例として、レプリケーションがあります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.1 4.1 で計画されている新機能

以下の機能は、MySQL 4.1 にまだ実装はされていませんが、MySQL 4.1 がベータ段階に移行する前に実装される予定です。MySQL 4.1 にすでに実装されている機能の一覧については、 「1.5.2.1 MySQL 4.1 で使用可能な機能」 を参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.2 5.0 で計画されている新機能

MySQL 5.0 には、以下の機能が組み込まれる予定です。多数の開発者がさまざまなプロジェクトで作業しているので、他にも多くの機能があることに注意してください。これらの機能の一部は、MySQL 4.1 に追加される可能性もあります。MySQL 4.1 にすでに実装されている機能の一覧については、 「1.5.2.1 MySQL 4.1 で使用可能な機能」 を参照してください。

MySQL 開発の最前線の参照を希望するユーザのために、MySQL バージョン 5.0 の BitKeeper リポジトリを公開しています。 「2.3.4 開発ソースツリーからのインストール」 節 参照 。

ストアドプロシージャ

新機能

標準への準拠、移植性、および移行

速度の向上

国際化

使いやすさの向上


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.3 5.1 で計画されている新機能

新機能

速度の向上

使いやすさの向上


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.4 近い将来に計画されている新機能

新機能

標準への準拠、移植性、および移行

速度の向上

国際化

使いやすさの向上

新しいオペレーティングシステム


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.5 中期的な将来に計画されている新機能

時間は、実際の時間ではなく、作業量に基づいて記されています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.6.6 計画されていない新機能

SQL-92/SQL-99 への完全な準拠を目標としています。実装を計画していない機能はありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7 MySQL の情報源

1.7.1 MySQL メーリングリスト   
1.7.2 IRC(インターネットリレーチャット)の MySQL コミュニティサポート   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.1 MySQL メーリングリスト

1.7.1.1 MySQL メーリングリスト   
1.7.1.2 質問またはバグの報告   
1.7.1.3 バグまたは問題を報告する方法   
1.7.1.4 メーリングリストで質問に回答する際のガイドライン   

このセクションでは MySQL メーリングリストの概要を説明するとともに、リストの使用方法に関するガイドラインを提供します。メーリングリストを購読すると、リストへのすべての投稿が電子メールメッセージとして送信されます。また、自分の質問や回答をリストに送信することもできます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.1.1 MySQL メーリングリスト

このセクションに記載されているメーリングリストを購読する場合または購読を中止する場合は、http://lists.mysql.com/ にアクセスしてください。購読または購読中止に関するメッセージはいずれのメーリングリストにも送信しないでください。送信した場合、そのメッセージが多数の他のユーザに自動的に配信されてしまいます。

ローカルサイトに MySQL メーリングリストの購読者が多数いる場合、lists.mysql.com からサイトに送信されたメッセージがローカルリストに配信されるように、ローカルのメーリングリストが作成されている場合があります。このような場合、ローカルの MySQL リストへの追加またはリストからの削除については、システム管理者にお問い合わせください。

メールプログラム内の個別のメールボックスにメーリングリストが送信されるようにするには、メッセージヘッダに基づいてフィルタを設定してください。List-ID: または Delivered-To: ヘッダを使用して、リストのメッセージを識別することができます。

MySQL メーリングリストは以下のとおりです。

announce
このリストは、新しいバージョンの MySQL および関連するプログラムの通知に使用される。これは、すべての MySQL ユーザが購読する必要がある、ボリュームの小さいリストである。

mysql
これは、MySQL に関する一般的なディスカッションに使用されるメインのリストである。トピックによっては、より専門的なリストでディスカッションを行ったほうがよいものもある。適切でないリストに投稿すると、回答が得られないことがある。

mysql-digest
これは、ダイジェスト形式の mysql リストである。このリストを購読すると、全リストのメッセージを受け取ることになる。これは、1 日 1 回大きなメールメッセージとして送信される。

bugs
これは、MySQL の最新リリース以降に報告された問題を常に把握しておきたいユーザや、バグの検出と修正のプロセスに積極的に参加したいユーザにとって興味深いリストである。 「1.7.1.3 バグまたは問題を報告する方法」 節 参照 。

bugs-digest
これは、ダイジェスト形式の bugs リストである。

internals
このリストは、MySQL コードに携わる人を対象としている。また、MySQL の開発およびポストパッチに関するディスカッションを行うフォーラムでもある。

internals-digest
これは、ダイジェスト形式の internals リストである。

mysqldoc
このリストは、MySQL AB の従業員、翻訳者、およびその他のコミュニティメンバなど、MySQL のマニュアルに携わる人を対象としている。

mysqldoc-digest
これは、ダイジェスト形式の mysqldoc リストである。

benchmarks
このリストは、パフォーマンスに関する問題に関心がある人を対象としている。データベースのパフォーマンス(MySQL に限らない)に関するディスカッションが中心だが、カーネル、ファイルシステム、ディスクシステムのパフォーマンスなど、より広範なカテゴリも含まれる。

benchmarks-digest
これは、ダイジェスト形式の benchmarks リストである。

packagers
このリストは、MySQL のパッケージおよびディストリビューションに関するディスカッションに使用される。これは、MySQL のパッケージに関するアイデアや、サポートされているすべてのプラットフォームおよびオペレーティングシステムでできる限り同じような MySQL の外観を確保するためのアイデアを交換するためにディストリビューション管理者によって使用されるフォーラムである。

packagers-digest
これは、ダイジェスト形式の packagers リストである。

java
このリストは、MySQL サーバおよび Java に関するディスカッションに使用される。MySQL Connector/J を含む、JDBC ドライバに関するディスカッションに使用されることがほとんどである。

java-digest
これは、ダイジェスト形式の java リストである。

win32
このリストは、Windows 9x/Me/NT/2000/XP などの Microsoft オペレーティングシステムで実行される MySQL ソフトウェアに関するすべてのトピックに使用される。

win32-digest
これは、ダイジェスト形式の win32 リストである。

myodbc
このリストは、ODBC を使用した MySQL サーバへの接続に関するすべてのトピックに使用される。

myodbc-digest
これは、ダイジェスト形式の myodbc リストである。

mysqlcc
このリストは、MySQL Control Center グラフィカルクライアントに関するすべてのトピックに使用される。

mysqlcc-digest
これは、ダイジェスト形式の mysqlcc リストである。

plusplus
このリストは、MySQL への C++ API を使用したプログラミングに関するすべてのトピックに使用される。

plusplus-digest
これは、ダイジェスト形式の plusplus リストである。

msql-mysql-modules
このリストは、現在 DBD-mysql と呼ばれている msql-mysql-modules を使用した MySQL の Perl サポートに関するすべてのトピックに使用される。

msql-mysql-modules-digest
これは、ダイジェスト形式の msql-mysql-modules リストである。

質問に対する回答が MySQL メーリングリストから得られなかった場合、MySQL AB から有料でサポートを受ける方法があります。その場合は、MySQL の開発者と直接連絡を取ることができます。 「1.4.1 MySQL AB によって提供されるサポート」 節 参照 。

以下は、英語以外の言語による MySQL メーリングリストです。これらのリストは MySQL AB が運営しているものではないので、品質は保証いたしません。

mysql-france-subscribe@yahoogroups.com フランス語のメーリングリスト
list@tinc.net 韓国語のメーリングリスト
このリストに subscribe mysql your@e-mail.address を電子メールでお送りください。
mysql-de-request@lists.4t2.com ドイツ語のメーリングリスト
このリストに subscribe mysql-de your@e-mail.address を電子メールでお送りください。このメーリングリストについては、http://www.4t2.com/mysql/ を参照してください。
mysql-br-request@listas.linkway.com.br ポルトガル語のメーリングリスト
このリストに subscribe mysql-br your@e-mail.address を電子メールでお送りください。
mysql-alta@elistas.net スペイン語のメーリングリスト
このリストに subscribe mysql your@e-mail.address を電子メールでお送りください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.1.2 質問またはバグの報告

バグレポートまたは質問を投稿する前に、以下のことを行ってください。

マニュアルやアーカイブで回答を見つけることができなかった場合、ローカルの MySQL の専門家とともに調べてください。それでも質問に対する回答を見つけることができなかった場合は、当社に問い合わせる前に、次のセクションに記載されているガイドラインに従って MySQL メーリングリストにメールをお送りください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.1.3 バグまたは問題を報告する方法

当社のバグデータベースは公開されているので、すべてのユーザが http://bugs.mysql.com/ で参照および検索することができます。システムにログインすると、新しいレポートを入力することもできます。

適切なバグレポートを作成するには忍耐が必要ですが、最初に正しく作成しておくと、当社にとってもユーザ自身にとっても時間の節約になります。バグの詳細なテストケースを含む適切なバグレポートの場合、次のリリースでバグが修正される可能性が非常に高くなります。このセクションでは、当社にとってあまり、またはまったく役に立たない作業にユーザが時間を費やさなくて済むように、レポートを正しく作成する方法を説明します。

バグレポート(または問題に関するレポート)の生成には mysqlbug スクリプトを使用することをお勧めします。mysqlbug は、`scripts' ディレクトリ(ソースディストリビューション)および MySQL インストールディレクトリ下の `bin' ディレクトリ(バイナリディストリビューション)にあります。mysqlbug を使用することができない場合でも(Windows を使用している場合など)、このセクションに記されている必要な情報すべてをレポートに記載する必要があります(最も重要なのは、オペレーティングシステムの説明と MySQL バージョンです)。

mysqlbug スクリプトを使用すると、以下の情報のほとんどを自動的に確認することができるので、簡単にレポートを生成することができます。ただし、重要な情報が不足している場合は、その情報をメッセージに追加してください。このセクションをよく読んで、ここに記されているすべての情報をレポートに記載してください。

できれば、MySQL サーバの最新の製品版または開発版を使用して問題をテストしてから投稿してください。だれもが記載されているテストケースで mysql test < script を使用するだけでバグを再現したり、バグレポートに含まれているシェルまたは Perl スクリプトを実行したりすることができるようにする必要があります。

バグデータベース(http://bugs.mysql.com/ )に投稿されたすべてのバグは、次の MySQL リリースで修正または文書化されます。小規模なコードの変更のみで問題を修正できる場合は、当社でも問題を修正するパッチを投稿します。

バグを報告する場所は通常、http://bugs.mysql.com/ です。

MySQL で重大なセキュリティバグを見つけた場合は、security@mysql.com に電子メールをお送りください。

再現可能なバグレポートがある場合、バグデータベース(http://bugs.mysql.com/ )に報告してください。この場合も、まず mysqlbug スクリプトを実行して、システムに関する情報を確認することをお勧めします。再現可能なバグは、次の MySQL リリースで修正される可能性が高くなります。

他の問題を報告する場合は、MySQL メーリングリストのいずれかを使用してください。

情報が多すぎるメッセージに対応することはできますが、少なすぎるメッセージに対応することはできません。多くの場合、問題の原因がわかっていると思い、細部を重要でないと考えるため、事実を省略してしまいます。記載するかどうかを迷ったときは、記載することをお勧めします。最初に十分な情報を記載していなかったために再度質問して、回答を待たなければならなくなるよりも、レポートに数行を追加する方が、はるかに時間が節約される上に、煩わしくありません

バグレポートで最もよくある誤りは、(a) 使用している MySQL ディストリビューションのバージョン番号を記載していない、(b) MySQL サーバがインストールされているプラットフォームの説明(プラットフォームの種類およびバージョン番号を含む)が十分でないというものです。これは非常に重要な情報なので、ほとんどの場合、この情報が記載されていないバグレポートは役に立ちません。"この機能が使用できないのはなぜですか?" という質問を受けることがよくあります。その場合、要求した機能がその MySQL バージョンに実装されていなかったり、レポートに記載されているバグが新しい MySQL バージョンですでに修正されていたりすることがあります。エラーがプラットフォーム依存である場合もあります。そのような場合、オペレーティングシステムやプラットフォームのバージョン番号を知らないで問題を修正することはほとんど不可能です。

また、コンパイラが問題に関連している場合は、コンパイラに関する情報も記載してください。ユーザがコンパイラのバグを見つけると、MySQL 関連の問題であると考えることがよくあります。ほとんどのコンパイラは常に開発中なので、バージョンごとに改良されています。問題がコンパイラに関連するものであるかどうかを判断するには、使用しているコンパイラを知る必要があります。コンパイルに関するすべての問題はバグと見なし、適宜報告してください。

問題に関する適切な説明がバグレポートに記載されていると、最も効果的です。そのため、問題につながったすべての操作の適切な例を挙げ、問題自体を詳細に記述してください。最も効果的なレポートは、バグや問題を再現する方法を示す詳細な例が記載されたものです。 「E.1.6 テーブルが破損した場合にテストケースを作成する」 節 参照 。

プログラムでエラーメッセージが生成された場合、そのメッセージをレポートに記載することが非常に重要です。プログラムを使用するアーカイブから情報を検索しようとする場合、報告されたエラーメッセージがプログラムで生成されたものと正確に一致している方が効果的です(大文字小文字の違いにも注意してください)。エラーメッセージを覚えるのではなく、メッセージ全体をレポートにコピーして貼り付けてください。

MyODBC に関する問題がある場合、MyODBC トレースファイルを生成し、レポートともに送信してください。 「11.2.7 MyODBC に関する問題の報告」 節 参照 。

レポートを読むユーザの多くが 80 桁ディスプレイを使用します。したがって、mysql コマンドラインツールを使用してレポートまたはサンプルを生成する際には、そのようなディスプレイの有効な幅を超える出力については、--vertical オプション(または \G ステートメント終端記号)を使用する必要があります(たとえば、EXPLAIN SELECT ステートメントの場合。このセクションの後述のサンプルを参照)。

レポートには以下の情報を記載してください。

サポート契約を結んでいるお客様は、他のユーザが同じ問題に遭遇しているかどうか(また、その問題が解決されているかどうか)を確認するために該当するメーリングリストにバグレポートを投稿するだけでなく、優先的に処理されるように mysql-support@mysql.com にも投稿してください。

MyODBC におけるバグの報告については、 「11.2.4 MyODBC に関する問題を報告する方法」 を参照してください。

一般的な問題に対する解決策については、 「A. 問題と一般的なエラー」 を参照してください。

メーリングリストではなく、個人宛てに回答が送信された場合、問題の解決に役立った回答が他のユーザにも役立つように、回答を要約してメーリングリストに送信するのがエチケットであると思います。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.1.4 メーリングリストで質問に回答する際のガイドライン

多数のユーザにとって興味深いと思われる回答については、質問した個人に直接返信するのではなく、メーリングリストに投稿することができます。その場合、元の投稿者以外のユーザにも役立つように、一般的な回答をするようにしてください。リストに投稿する際には、回答が前の回答と重複していないことを確認してください。

元のメッセージ全体を引用するのではなく、質問の重要な部分を回答に要約してください。

HTML モードがオンになっているブラウザからメールメッセージを投稿しないでください。多くのユーザはブラウザでメールを読みません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.7.2 IRC(インターネットリレーチャット)の MySQL コミュニティサポート

さまざまな MySQL メーリングリストに加え、IRCインターネットリレーチャット)にも経験豊富なコミュニティがあります。以下は、当社が現在把握している最もすぐれたネットワーク/チャネルです。

IRC ネットワークに接続する IRC クライアントソフトウェアを探している場合は、X-Chathttp://www.xchat.org/ )を参照してください。X-Chat(GPL ライセンス)は、Unix および Windows プラットフォームで使用することができます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8 MySQL の標準への準拠

このセクションでは、MySQL と ANSI/ISO SQL 標準との関連を説明します。MySQL サーバには SQL 標準に対する多数の拡張機能があります。ここでは、それらの拡張機能と使用方法を説明します。また、MySQL サーバに不足している機能と、差異を解決する方法に関する情報も提供します。

当社の目標は、正当な理由なく、あらゆる用途に対して MySQL サーバの使いやすさを制限しないことです。考えられるすべての用途に対応する開発を行うリソースがそろっていなくても、新しい領域で MySQL サーバを使用しようとしているユーザを常に喜んで援助し、アドバイスを提供します。

製品に関する当社の主な目標の 1 つは、速度や信頼性を犠牲にすることなく、SQL-99 標準への準拠に向けて開発を続けることです。大部分のユーザにとって MySQL サーバが大幅に使いやすくなるのであれば、当社は SQL に対する拡張機能や SQL 以外の機能のサポートを積極的に追加します(MySQL サーバ 4.0 の新しい HANDLER インタフェースは、この方針の一例です。 「6.4.9 HANDLER 構文」 節 参照 。)

当社は、負荷が高い Web/ログの使用とミッションクリティカルな年中無休の使用の両方に対応するために、トランザクションデータベースと非トランザクションデータベースのサポートを継続します。

MySQL サーバは、小規模なコンピュータシステムで中規模のデータベース(1,000 万 〜 1 億レコード、または 1 テーブルあたり約 100 MB)を使用することを目的として最初から設計されました。テラバイト規模のデータベースでも適切に動作するとともに、ハンドヘルドデバイスや組み込み用途により適した小規模な MySQL をコンパイルできるように、MySQL サーバの拡張を続けます。MySQL サーバのコンパクトな設計によって、ソースツリーで競合することなく、これらのどちらの方向も実現することができます。

現時点では、リアルタイムのサポートは考えていません(ただし、レプリケーションサービスを使用して、すでに多くのことを実行することができます)。

データベースクラスタのサポートは、新しいストレージエンジンの実装によって 2004 年内に開始される予定です。

データベースサーバでの XML サポートの提供を考えています。

1.8.1 MySQL が準拠する標準   
1.8.2 ANSI モードでの MySQL の実行   
1.8.3 SQL-92 標準に対する MySQL 拡張機能   
1.8.4 MySQL と SQL-92 との違い   
1.8.5 MySQL における制約の処理   
1.8.6 MySQL の既知のエラーと設計上の問題   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.1 MySQL が準拠する標準

エントリレベルは SQL-92 です。ODBC レベルは 0 〜 3.51 です。

コードの速度と品質を犠牲にすることなく、SQL-99 標準を完全にサポートすることを目標としています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.2 ANSI モードでの MySQL の実行

--ansi または --sql-mode=ANSI オプションを指定して mysqld を開始すると、MySQL サーバの動作は次のように変わります。

ANSI モードでサーバを実行するのは、以下のオプションを指定してサーバを起動するのと同じことです。

 
--sql-mode=REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY
--transaction-isolation=SERIALIZABLE

MySQL 4.1 では、次の 2 つのステートメントで同じ動作を実現することができます。

 
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode =
  "REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY";

MySQL 4.1.1 では、sql_mode オプションを次のように使用することもできます。

 
SET GLOBAL sql_mode="ansi";

この場合、sql_mode 変数の値は、ANSI モードに関連するすべてのオプションに設定されます。結果を確認するには、以下を実行します。

 
mysql> SET GLOBAL sql_mode="ansi";
mysql> SELECT @@GLOBAL.sql_mode;
+---------------------------------------------------------------------------+
| @global.sql_mode                                                          |
+---------------------------------------------------------------------------+
| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.3 SQL-92 標準に対する MySQL 拡張機能

MySQL サーバには、他の SQL データベースにはない拡張機能があります。それらの拡張機能を使用した場合、他の SQL サーバにコードを移植できなくなるので注意してください。場合によっては、MySQL 拡張機能を含むコードを記述しても、/*! ... */ 形式のコメントを使用することで移植することができます。その場合、MySQL サーバでは、他の MySQL ステートメントと同様にコメント内のコードが解析および実行されますが、他の SQL サーバでは拡張機能が無視されます。次に例を示します。

 
SELECT /*! STRAIGHT_JOIN */ col_name FROM table1,table2 WHERE ...

'!' の後ろにバージョン番号を追加すると、MySQL バージョンが、使用されているバージョン番号以降の場合にのみ、構文が実行されます。

 
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);

つまり、バージョン 3.23.02 以降を使用している場合、MySQL サーバで TEMPORARY キーワードが使用されます。

以下は、MySQL 拡張機能の一覧です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4 MySQL と SQL-92 との違い

MySQL サーバを ANSI SQL 標準(SQL-92/SQL-99)および ODBC SQL 標準に準拠したものにすることを目標としていますが、以下のように、MySQL サーバが異なる動作を示すことがあります。

1.8.4.1 サブクエリ   
1.8.4.2 SELECT INTO TABLE   
1.8.4.3 トランザクションとアトミックオペレーション   
1.8.4.4 ストアドプロシージャとトリガ   
1.8.4.5 外部キー   
1.8.4.6 ビュー   
1.8.4.7 コメントの開始記号としての `--'   

優先順位に従って並べられた、新しい拡張機能が MySQL サーバに追加される時期を示す一覧については、オンラインの MySQL TODO リスト(http://www.mysql.com/doc/en/TODO.html )を参照してください。これは、このマニュアルの TODO リストの最新版です。 「1.6 MySQL の今後(TODO)」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.1 サブクエリ

MySQL バージョン 4.1 では、サブクエリと派生テーブル(名前のないビュー)がサポートされています。 「6.4.2 サブクエリ構文」 節 参照 。

4.1 より前のバージョンの MySQL については、結合などの方法によって、ほとんどのサブクエリを記述し直すことができます。 「6.4.2.11 初期の MySQL バージョンに合わせたサブクエリの書き換え」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.2 SELECT INTO TABLE

MySQL サーバでは、Sybase SQL 拡張機能 SELECT ... INTO TABLE ... はまだサポートされていません。代わりに、SQL-99 構文 INSERT INTO ... SELECT ... がサポートされています。これらは、基本的には同じです。 「6.4.3.1 INSERT ... SELECT 構文」 節 参照 。

 
INSERT INTO tblTemp2 (fldID)
       SELECT tblTemp1.fldOrder_ID
       FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100;

また、SELECT INTO OUTFILE... または CREATE TABLE ... SELECT を使用することもできます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.3 トランザクションとアトミックオペレーション

MySQL サーバ(バージョン 3.23-max およびすべてのバージョン 4.0 以降)では、InnoDB および BDB トランザクションストレージエンジンでトランザクションがサポートされています。InnoDB は、完全に ACID に準拠しています。 「7. MySQL のテーブル型」 節 参照 。

MySQL サーバのその他の非トランザクションテーブル型(MyISAM など)は、"アトミックオペレーション"と呼ばれる別のデータ整合性のパラダイムに従います。トランザクションの観点では、MyISAM テーブルは事実上、常に AUTOCOMMIT=1 モードで動作すると言えます。アトミックオペレーションでは多くの場合、パフォーマンスの高さに値する整合性が確保されます。

両方のパラダイムをサポートする MySQL サーバでは、ユーザはアトミックオペレーションの速度を必要とするか、アプリケーションでトランザクション機能を使用する必要があるかを選択することができます。この選択は、テーブルごとに行うことができます。

ほとんどの場合、トランザクションテーブル型と非トランザクションテーブル型のどちらを選ぶかの決め手となるのはパフォーマンスです。トランザクションテーブルの場合、はるかに大きなメモリとディスク領域が必要で、CPU のオーバーヘッドも大きくなります。しかし、InnoDB のようなトランザクションテーブル型には特有の機能も多数あります。MySQL サーバのモジュール設計によって、このようなさまざまなストレージエンジンすべてを同時に使用することができるので、さまざまな要件に合わせて、あらゆる条件で最適なパフォーマンスを確保することが可能です。

しかし、MySQL サーバの機能を使用して、非トランザクションの MyISAM テーブルでも厳密な整合性を確保するにはどのようにすればよいのでしょうか。また、非トランザクションテーブルの機能はトランザクションテーブル型にどのように対抗できるのでしょうか。

  1. トランザクションパラダイムでは、重大な状況で COMMIT ではなく ROLLBACK の呼び出しに依存するようにアプリケーションが作成されている場合、トランザクションの方が便利である。また、トランザクションでは、完了していない更新や失敗した活動がデータベースにコミットされることはない。サーバには自動ロールバックを行う機会が与えられ、データベースは保護される。

    MySQL サーバでは、ほとんどの場合、更新前に簡単なチェックを組み込んだり、データベースの不整合をチェックして、不整合が発生した場合には自動的に修復または警告する簡単なスクリプトを実行したりすることで、発生する可能性がある問題を解決することができる。MySQL ログを使用したり、別のログを 1 つ追加したりするだけで、通常、データの整合性が失われることなく、完全にテーブルを修復することができる。

  2. ほとんどの場合、重要なトランザクション更新はアトミックな更新に記述し直すことができる。通常、トランザクションによって解決される整合性の問題はすべて、LOCK TABLES またはアトミックな更新を使用して解決することができる。これによって、サーバが自動的に停止するという、トランザクションデータベースシステムと共通する問題が回避される。

  3. サーバが停止すると、トランザクションシステムでもデータが失われる可能性がある。個々のシステムの違いは、データが失われる可能性がある時間がどれだけ短いかという点だけである。100% 安全なシステムはなく、"十分に安全" なだけである。最も安全なトランザクションデータベースシステムと言われている Oracle でさえも、そのような状況ではデータが失われることがあると報告されている。

    MySQL サーバを安全に使用するには、トランザクションテーブルを使用するかどうかに関係なく、バックアップを作成し、バイナリログをオンにすればよいだけである。これにより、他のトランザクションデータベースシステムで可能なように、どのような状況からもリカバリすることができる。使用するデータベースシステムに関係なく、どのような場合でもバックアップを作成することが望ましいのは当然である。

トランザクションパラダイムには長所と短所があります。多数のユーザおよびアプリケーション開発者は、停止が発生する、または停止が必要な問題に関するコード化の容易さに頼っています。しかし、アトミックオペレーションのパラダイムに慣れていなかったり、トランザクションの方が詳しいという場合でも、非トランザクションテーブルの速度が、最も高速で最適に調整されたトランザクションテーブルの速度の 3 倍から 5 倍も速いという長所を考えてみてください。

整合性が最も重要な状況では、MySQL サーバは、非トランザクションテーブルでもトランザクションレベルの信頼性と整合性を提供します。LOCK TABLES を使用してテーブルをロックすると、整合性チェックが行われるまで、すべての更新が延期されます。読み取りロック(書き込みロックの逆)のみが設定されている場合、読み取りと挿入は引き続き行うことができます。新しく挿入したレコードは、読み取りがロックされているクライアントには、読み取りロックが解除されるまで表示されません。INSERT DELAYED を使用すると、ロックが解除されるまで挿入をローカルキューに入れることができ、クライアントは挿入が完了するまで待機する必要はありません。 「6.4.3.2 INSERT DELAYED 構文」 節 参照 。

ここでいう "アトミック" とは、魔法のようなものではありません。個々の更新の実行中は、他のユーザがそれを妨害できないようにするとともに、自動ロールバック(あまり注意を払わなかった場合に、トランザクションテーブルで行われることがあります)が行われないようにすることができるというだけです。また、MySQL サーバでは、ダーティリードが行われることもありません。

非トランザクションテーブルを使用する際のテクニックは、以下のとおりです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.4 ストアドプロシージャとトリガ

ストアドプロシージャは、バージョン 5.0 開発ツリーで実装されます。 「2.3.4 開発ソースツリーからのインストール」 節 参照 。

この試みは SQL-99 に基づくもので、Oracle PL/SQL に類似した(ただし、同じではありません)基本構文を使用します。これに加え、外部言語でフックする SQL-99 フレームワークも実装します。

ストアドプロシージャは、サーバでコンパイルし、格納することができる SQL コマンドのセットです。これが行われると、クライアントはクエリ全体の再発行を繰り返す必要がなく、ストアドプロシージャを参照することができます。その結果、クエリを一度解析するだけで済み、サーバとクライアント間で送信される情報が少なくなるので、全体的なパフォーマンスが向上します。また、サーバに関数のライブラリを作成することで、概念レベルを高めることもできます。ただし、サーバ側で行われる作業が増え、クライアント(アプリケーション)側で行われる作業が少なくなるので、ストアドプロシージャによってデータベースサーバシステムの負荷が高くなります。

トリガは、MySQL バージョン 5.1 で実装される予定です。トリガは、実質的にはストアドプロシージャの一種で、特定のイベントが発生すると呼び出されます。たとえば、トランザクションテーブルからレコードが削除されるたびにトリガされるストアドプロシージャや、すべてのトランザクションが削除されると、顧客テーブルから対応する顧客を自動的に削除するストアドプロシージャを設定することができます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.5 外部キー

MySQL サーバ 3.23.44 以降では、CASCADEON DELETE、および ON UPDATE を含む外部キー制約のチェックが InnoDB テーブルでサポートされています。 「7.5.5.2 FOREIGN KEY 制約」 節 参照 。

他のテーブル型については、MySQL サーバでは現在、CREATE TABLE コマンドで FOREIGN KEY 構文のみが解析されますが、この情報は使用/保存されません。近いうちに、この情報がテーブル仕様ファイルに保存され、mysqldump および ODBC によって取得できるように、この実装を拡張する予定です。さらにその後には、MyISAM テーブルについても外部キー制約を実装する予定です。

SQL の外部キーはテーブルの結合に使用されるのではなく、参照整合性(外部キー制約)のチェックと確保に使用されます。SELECT ステートメントを使用して複数のテーブルから結果を得るには、次のようにテーブルを結合します。

 
SELECT * FROM table1,table2 WHERE table1.id = table2.id;

「6.4.1.1 JOIN 構文」 節 参照 。 「3.6.6 外部キーの使用」 節 参照 。

制約として使用する際、アプリケーションによって MyISAM テーブルに適切な順序でレコードが挿入される場合は、外部キーを使用する必要はありません。

MyISAM テーブルについては、ON DELETE が実装されていないという問題に対処するには、外部キーがあるテーブルからレコードを削除する際に適切な DELETE ステートメントをアプリケーションに追加します。実際、この方法は外部キーを使用する場合と同じくらい簡単で(場合によっては、この方が簡単です)、移植性はそれよりもはるかに高くなります。

MySQL サーバ 4.0 では、複数テーブルの削除を使用して、1 つのコマンドで多数のテーブルからレコードを削除することができます。 「6.4.5 DELETE 構文」 節 参照 。

ON DELETE ... を含まない FOREIGN KEY 構文は多くの場合、自動 WHERE 節を生成する ODBC アプリケーションによって使用されます。

外部キーを誤って使用すると、深刻な問題が発生することがあるので注意してください。適切に使用した場合でも、外部キーのサポートは、参照整合性の問題を解決する上で役に立つことはあっても、重要な解決策にはなりません。

外部キーを使用するメリットは、以下のとおりです。

外部キーを使用するデメリットは、以下のとおりです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.6 ビュー

ビューは現在実装中で、MySQL サーババージョン 5.0 または 5.1 で実装されます。

これまで、MySQL サーバは、アプリケーション作成者がデータベースの使用を完全に制御することができるアプリケーションや Web システムで最も多く使用されてきました。しかし、時間の経過とともに用途は変わってきており、ビューを重要視するユーザが増えています。

名前のないビュー(派生テーブルSELECTFROM 節内のサブクエリ)は、バージョン 4.1 ですでに実装されています。

ビューは、1 つのテーブルのように一連の関係(テーブル)にユーザがアクセスできるようにし、ユーザのアクセスをそれのみに制限する場合に便利です。また、ビューを使用して、レコード(特定のテーブルのサブセット)へのアクセスを制限することもできます。MySQL サーバには高度な特権システムがあるので、カラムへのアクセスを制限する場合にはビューを使用する必要はありません。 「4.3 一般的なセキュリティ関連事項と MySQL アクセス制御システム」 節 参照 。

多数の DBMS では、ビューに対する更新を行うことはできません。代わりに、個々のテーブルに対して更新を実行する必要があります。当社はビューの実装を設計する際に、理論的に更新可能なすべてのビューは実際にも更新可能でなければならないという、リレーショナルデータベースシステムに関する "コッドのルール #6" に SQL の範囲内で可能な限り準拠することを目標としています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.4.7 コメントの開始記号としての `--'

一部の他の SQL データベースでは、コメントを開始するために `--' が使用されます。MySQL サーバでは、コメント開始文字として `#' が使用されます。また、C コメントスタイルの /* this is a comment */ を使用することもできます。 「6.1.6 コメント構文」 節 参照 。

MySQL サーババージョン 3.23.3 以降では、`--' コメントスタイルを使用することができます。ただし、コメントの後にスペース(または、改行などの制御文字)が続く場合に限ります。これは、このコメントスタイルによって、!payment! の値を自動的に挿入する次のようなコードを使用した自動生成の SQL クエリで多数の問題が発生していたためです。

 
UPDATE tbl_name SET credit=credit-!payment!

payment の値が負数の場合、どうなるかを考えてみてください。SQL では 1--1 が有効なので、コメントを `--' で開始できるようにした場合の影響は重大です。

MySQL サーババージョン 3.23.3 以降でコメントのこの方法の実装を使用した場合、1-- This is a comment は実際に安全です。

もう 1 つの安全な機能は、mysql コマンドラインクライアントによって `--' で始まるすべての行が削除されるというものです。

以下の情報は、3.23.3 より前のバージョンの MySQL を実行している場合にのみ関連します。

テキストファイルの SQL プログラムに `--' コメントが含まれている場合、次のコマンドを使用する必要があります。

 
shell> replace " --" " #" < text-file-with-funny-comments.sql \
         | mysql database

通常の次のコマンドの代わりに、上記のコマンドを使用してください。

 
shell> mysql database < text-file-with-funny-comments.sql

また、コマンドファイルを "その場で" 編集して、`--' コメントを `#' コメントに変更することもできます。

 
shell> replace " --" " #" -- text-file-with-funny-comments.sql

次のコマンドで元に戻してください。

 
shell> replace " #" " --" -- text-file-with-funny-comments.sql


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.5 MySQL における制約の処理

MySQL ではトランザクションテーブルとロールバックが有効でない非トランザクションテーブルの両方を使用することができるので、MySQL と他のデータベースとでは制約の処理が多少異なります。

エラー時にロールバックすることができない非トランザクションテーブルで多数のレコードを更新した場合の処理を実装しなければなりません。

基本的な概念は、検出可能なエラーをコンパイル時に生成し、受け取ったエラーから実行時にリカバリするというものです。ほとんどの場合にこれが実装されていますが、まだすべてについて実装されているわけではありません。 「1.6.4 近い将来に計画されている新機能」 節 参照 。

MySQL における基本的なオプションは、途中でステートメントを中止するか、問題からリカバリするためにできる限りのことを行って、処理を続行するかです。

さまざまな種類の制約に関する問題を以下で説明します。

1.8.5.1 PRIMARY KEY/UNIQUE KEY 制約   
1.8.5.2 NOT NULL および DEFAULT 値制約   
1.8.5.3 ENUM および SET 制約   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.5.1 PRIMARY KEY/UNIQUE KEY 制約

通常、主キー、ユニークキー、または外部キー違反を引き起こすレコードの挿入/更新を行おうとすると、エラーが発生します。InnoDB のようなトランザクションストレージエンジンを使用している場合、MySQL ではトランザクションが自動的にロールバックされます。非トランザクションストレージエンジンを使用している場合、MySQL はエラーが発生したレコードで停止し、残りのレコードは未処理のままになります。

この問題を解決するために、MySQL では、キー違反が発生する可能性があるほとんどのコマンドに IGNORE ディレクティブのサポートを追加しました(INSERT IGNORE ... など)。この場合、キー違反は無視され、引き続き次のレコードが処理されます。MySQL における処理に関する情報を取得するには、mysql_info() API 関数を使用します。MySQL バージョン 4.1 では SHOW WARNINGS コマンドを使用します。 「11.1.3.30 mysql_info() 節 参照 。 「4.6.8.9 SHOW WARNINGS | ERRORS 節 参照 。

現時点では、外部キーがサポートされているのは InnoDB テーブルのみです。 「7.5.5.2 FOREIGN KEY 制約」 節 参照 。MyISAM テーブルでの外部キーサポートは、MySQL 5.0 ソースツリーで実装される予定です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.5.2 NOT NULL および DEFAULT 値制約

非トランザクションテーブルを簡単に処理できるように、MySQL のすべてのフィールドにはデフォルト値が設定されています。

NOT NULL カラムにおける NULL や数値カラムにおける大きすぎる数値のように '正しくない' 値をカラムに挿入した場合、MySQL ではエラーを生成するのではなく、カラムを '最適可能値' に設定します。数値については、0、使用可能な最小値、または使用可能な最大値です。文字列については、空白文字列、またはカラム内で使用可能な最長文字列です。

つまり、NULL 値を使用することができないカラムに NULL を格納しようとすると、0 または "(空白文字列)が代わりに格納されます。単一レコードの挿入については、この後者の動作を -DDONT_USE_DEFAULT_FIELDS コンパイルオプションを使用して変更することができます。 「2.3.3 一般的な configure オプション」 節 参照 。この場合、非 NULL 値を必要とするすべてのカラムについて明示的に値を指定しない限り、INSERT ステートメントでエラーが生成されます。

前述のルールの理由は、クエリの実行が開始される前にこれらの条件をチェックできないためです。複数のレコードを更新した後で問題が発生した場合、テーブル型でサポートされていない可能性があるため、単にロールバックすることはできません。停止するというオプションは、この場合、更新が '未完了' のため、最悪のシナリオになる可能性があるので、適切ではありません。'できる限りのことを行って'、何も問題が発生していないものとして処理を続行する方が適切です。MySQL 5.0 では、自動フィールド変換に関する警告と、トランザクションテーブルのみを使用するステートメントで許可されていないフィールド割り当てが行われた場合にステートメントをロールバックすることができるオプションを提供することで、これを改善する予定です。

このことは、通常、フィールドの内容をチェックするために MySQL を使用するのではなく、アプリケーションでこれを処理しなければならないことを意味します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.5.3 ENUM および SET 制約

MySQL 4.x では、ENUM は実際の制約ではなく、特定の値セットのみを使用することができるフィールドを格納するためのより効率的な方法です。これは、NOT NULL が受け付けられないのと同じ理由によります。 「1.8.5.2 NOT NULL および DEFAULT 値制約」 節 参照 。

ENUM フィールドに正しくない値を挿入した場合、予約された列挙数 0 に設定され、文字列コンテキストでは空白文字列として表示されます。 「6.2.3.3 ENUM 型」 節 参照 。

SET フィールドに正しくない値を挿入した場合、その値は無視されます。 「6.2.3.4 SET 型」 節 参照 。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.6 MySQL の既知のエラーと設計上の問題

1.8.6.1 その後の MySQL バージョンで修正された 3.23 のエラー   
1.8.6.2 MySQL の未解決のバグと設計上の問題   


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.6.1 その後の MySQL バージョンで修正された 3.23 のエラー

以下の既知のエラー/バグは、MySQL 3.23 では修正されていません。これらの修正には、より深刻な他のバグを引き起こす可能性がある多数のコード変更が関連するためです。また、これらのバグは '非致命的' または '許容範囲' として分類されています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top ] [Contents ] [Index] [ ? ]

1.8.6.2 MySQL の未解決のバグと設計上の問題

以下の既知の問題は、優先して修正されます。

以下の既知の問題は、近いうちに修正されます。

以下は、MySQL の初期のバージョンにおける既知のバグです。

プラットフォーム固有のバグについては、コンパイルおよび移植に関するセクションを参照してください。 「2.3 MySQL ソースディストリビューションのインストール」 節 参照 。 「E. 他システムへの移植」 節 参照 。


[ << ] [ >> ]           [Top ] [Contents ] [Index] [ ? ]

2004年 10月 9日 texi2html にて作成