ฉันเปิดใช้งานสิ่งต่อไปนี้ระหว่างการพัฒนา:
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 จะ ไม่ ส่งข้อผิดพลาดเมื่อพยายามแทรกค่า NULL
ลงในคอลัมน์ NOT NULL
แต่ mysql จะแทรกข้อมูลเริ่มต้นแทน โดยขึ้นอยู่กับประเภทของคอลัมน์ เช่น. สำหรับคอลัมน์ datetime NOT NULL
เมื่อคุณใส่ค่า NULL
mysql จะตั้งค่าเริ่มต้นของ datetime เป็น 0000-00-00 00-00-00
ในแง่หนึ่ง โหมดเข้มงวดก็เหมือนกับการเพิ่มระดับการรายงานข้อผิดพลาดและการแสดงข้อผิดพลาดใน PHP ซึ่งเป็นแนวทางปฏิบัติที่ดีที่สุดในระหว่างการพัฒนา
ini_set('error_reporting', -1);
ini_set('display_errors', true);
ฉันเดาว่าสิ่งที่ฉันกำลังมองหาคืออะไร การกำหนดค่าที่แนะนำของคุณคืออะไรในระหว่างการพัฒนา และเพราะเหตุใด
display_errors=1
&error_reporting(-1)
ใน PHP - person Gerard Roche   schedule 10.04.2012