MySQLモードStrict Mode知識点詳細

1675 ワード

I.Strict Modeの説明
mysql 5.0以上のバージョンによりstrit mode(STRICT_)TRANS_TABLES)の制限:
1)not nullフィールドにnull値を挿入することはサポートされていません。
2)自己成長フィールドに''値を挿入することはサポートされていません。null値を挿入することができます。
3)textフィールドがサポートされていません。標準値があります。
下のコードを見てください。(最初のフィールドは自己増加フィールドです。)
Sqlコード

$query="insert into demo values('','$firstname','$lastname','$sex')"; 
上のコードは非strictモードでのみ有効です。
コード

$query="insert into demo values(NULL,'$firstname','$lastname','$sex')"; 
上のコードはstrictモードのみ有効です。空の値をNULLに変えました。
II.データベースにStrict Modeをサポートさせる
1.データベース構造を以下のように改善してstrict modeをサポートする:
1)すべてのnot nullフィールドにnullのデフォルト値を設定し、文字列のデフォルト値は''で、数値のデフォルト値は0で、日付のデフォルト値は'00-00:00'です。
2)textフィールドのデフォルト値を削除します。
3)規範化の改善:titleフィールドを統一してvarrhar(255)に変更し、デフォルト値のnullフィールドをnot nullフィールドに変更する。
2.インストールしたPHPプログラムのデータベース構造がStrict modeをオフにすると
1)一つはmysql 5.0(以上を含む)バージョンをインストールする時strick modeを削除します。
my.cnfを編集して、Strict Modeを閉じる:

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
2)もう一つはクエリー語句の修正です。例えば

if ($this->dbcharset) {
@mysql_query("SET NAMES ".$this->dbcharset);
}
後に実行します

mysql_query("SET @@sql_mode = ''");
注意してください。あなたが使っているのはMySQL 5です。
mysqli方式は似ています。実行するのは

mysqli_query($this->connection_id, "SET @@sql_mode = ''");
以上、MySQLモードStrict Modeの知識点について詳しく説明した文章をここに紹介します。MySQLモードStrict Modeの内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。