2

開発中に以下を有効にします。

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はデフォルトで日時値をに設定します。NULLNOT NULLNOT NULLNULL0000-00-00 00-00-00

厳密モードは、ある意味で、error_reportingレベルを上げて、PHPでエラーを表示するようなものです。これは、開発中のベストプラクティスです。

ini_set('error_reporting', -1);
ini_set('display_errors', true);

だから、私が探しているのは、開発中に推奨される構成は何ですか、そしてその理由は何ですか?

4

1 に答える 1

1

次の追加オプションをお勧めします。

# creates a innodb file per table instead of having all the tables in a single tablespace file
innodb_file_per_table 

# increase the max allowed packet to a large size for file imports
max_allowed_packet = 32M

# the InnoDB pool size. use up to 80% available RAM for dedicated machines, and as much
# as you can spare for development machines also depending on the size of the databases
# you will be running so that as much of the database as possible fits into memory 
innodb_buffer_pool_size = 512M
于 2012-04-10T15:08:39.317 に答える