開発中に以下を有効にします。
my.cnf:
[mysqld]
log_slow_queries = /var/log/mysql/mysql-slow.log
sql_mode = STRICT_ALL_TABLES
SQL_MODE
STRICT_ALL_TABLES
すべてのストレージエンジンに対して厳密モードを有効にします。無効なデータ値は拒否されます。
たとえば、次のことを考慮してください。
CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`date` datetime NOT NULL
);
INSERT INTO `posts` (`title`, `date`) VALUES ('Title text', NULL);
を使用するSTRICT_ALL_TABLES
sql_mode
と、mysqlは列に値を挿入しようとしたときにエラーをスローしません。代わりに、mysqlは列のタイプに応じてデフォルトのデータを挿入します。たとえば、値を挿入する日時列の場合、mysqlはデフォルトで日時値をに設定します。NULL
NOT NULL
NOT NULL
NULL
0000-00-00 00-00-00
厳密モードは、ある意味で、error_reportingレベルを上げて、PHPでエラーを表示するようなものです。これは、開発中のベストプラクティスです。
ini_set('error_reporting', -1);
ini_set('display_errors', true);
だから、私が探しているのは、開発中に推奨される構成は何ですか、そしてその理由は何ですか?