MySQLのSQL Modeの表示と設定の詳細

2224 ワード

MySQLのSQL Modeの表示と設定
MySQLは異なるモードで動作し、異なるシーンで異なるモードを実行することができます。これは主にシステム変数sql_に依存します。modeの値。この記事では主にMacシステムの下でこの値の表示と設定を紹介します。
各モードの意味と役割については、インターネットで簡単に見つけられます。ここでは紹介しません。
アクティブエリアと時間によって、セッションレベル、グローバルレベル、設定(永久有効)レベルの3つのレベルに分けることができます。
セッションレベル:
表示→

select @@session.sql_mode;
変更→

set @@session.sql_mode='xx_mode'
set session sql_mode='xx_mode'
セッションは省略できます。標準セッションは現在のセッションにのみ有効です。
グローバルレベル:
表示→
select@@global.sql_mode;
変更→

set global sql_mode='xx_mode';
set @@global.sql_mode='xx_mode';
高度な権限が必要で、次回の接続のみ有効になり、現在のセッション(親測定)に影響を与えず、MySQLを再起動したら失効します。MySQLを再起動すると、設定ファイルの対応値を再読み込みしますので、もし永久的に有効になるなら、設定ファイルの値を変更する必要があります。
設定変更(永久有効):
vi/etc/my.cnfを開く
下に追加

[mysqld]
sql-mode = "xx_mode"
注意:[mysqld]は必ず加えなければなりません。しかもsql-modeの中間は「-」で、下線ではありません。
終了を保存し、サーバーを再起動すれば、永久に有効になります。
Macの下にMySQLをインストールすると設定ファイルがないので、自分で手動で追加する必要があります。
ps
最後にもう一つのものを追加します。Macの下のMySQLの起動、停止、再起動などです。
主に二つの方法があります。
一つはクリックして「システムの好み設定」に対応するMySQLパネルで、管理が可能です。
二はコマンドライン方式です。
MySQL関連の実行スクリプトは、主に次の2つが使われています。

/usr/local/mysql/support-files/mysql.server
/usr/local/mysql/bin/mysql
mysql.serverはコントロールサーバの起動や停止などの操作です。

mysql.server start|stop|restart|status
mysqlは主にサーバーを接続するために使います。

mysql -uroot -p **** -h **** -D **
いくつかのsudo権限が必要です。また、関連経路を環境変数に追加することができます。簡単に書くことができます。どうやって追加するかは紹介しません。
知識点拡張:
Strict Modeの説明
mysql 5.0以上のバージョンによりstrit mode(STRICT_)TRANS_TABLES)の制限:
1)not nullフィールドにnull値を挿入することはサポートされていません。
2)自己成長フィールドに''値を挿入することはサポートされていません。null値を挿入することができます。
3)textフィールドがサポートされていません。標準値があります。
下のコードを見てください。(最初のフィールドは自己増加フィールドです。)

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

$query="insert into demo values(NULL,'$firstname','$lastname','$sex')";
上のコードはstrictモードのみ有効です。空の値をNULLに変えました。