Tóm lại, tôi có một tệp SQL mà tôi muốn nhập dưới dạng skel
tệp kiểu, vì vậy việc này sẽ được thực hiện lặp đi lặp lại theo chương trình. Tôi có thể chỉnh sửa tệp SQL theo bất kỳ cách nào tôi muốn, nhưng tôi không muốn chạm vào chính ứng dụng đó.
Ứng dụng này sử dụng userid = 0
để đại diện cho người dùng ẩn danh. Nó cũng có một mục nhập (trống) có liên quan trong cơ sở dữ liệu để đại diện cho 'người dùng' này. Do đó, dòng trong của tôi skel.sql
trông giống như sau:
INSERT INTO `{{TABLE_PREFIX}}users` VALUES (0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);
Vấn đề với điều này là uid
một auto_increment
trường, về mặt kỹ thuật, 0
là một giá trị không hợp lệ. Hoặc ít nhất, nếu bạn đặt nó thành 0, về cơ bản bạn đang nói với MySQL, "Vui lòng chèn id tiếp theo vào trường này."
Bây giờ, tôi cho rằng tôi có thể đặt một truy vấn INSERT
sau đó UPDATE
vào tệp SQL của mình, nhưng có cách nào để nói với MySQL nói chung rằng có, tôi thực sự muốn chèn 0
vào trường này không?
sql_mode
là danh sách cờ được phân tách bằng dấu phẩy. Nếu bạn làm vậysql_mode='NO_AUTO_VALUE_ON_ZERO'
, bạn có thể vô tình vô hiệu hóa các cờ khác