Đối với một chút nền, chúng tôi sử dụng Zend Framework 2 và Doctrine tại nơi làm việc. Giáo lý sẽ luôn chèn NULL
cho các giá trị mà chúng tôi không cư trú. Thông thường, điều này là không sao nếu trường có giá trị mặc định, sau đó NÊN điền trường bằng giá trị mặc định này.Chèn NULL vào cột NOT NULL với Giá trị Mặc định
Đối với một trong các máy chủ của chúng tôi chạy MySQL 5.6.16 truy vấn như truy vấn bên dưới chạy và thực thi tốt. Mặc dù NULL
đang được chèn vào một trường không có giá trị rỗng, nhưng MySQL sẽ điền vào trường với giá trị mặc định của nó khi chèn.
Trên một máy chủ khác đang chạy MySQL 5.6.20, chúng tôi chạy truy vấn bên dưới và nó kết thúc vì nó phàn nàn 'field_with_default_value' KHÔNG THỂ rỗng.
INSERT INTO table_name(id, field, field_with_default_value)
VALUES(id_value, field_value, NULL);
Bản thân giáo lý không hỗ trợ chuyển qua "DEFAULT" vào truy vấn được xây dựng để không phải là tùy chọn. Tôi hình dung điều này phải là một máy chủ MySQL của một số loại nhìn thấy như thể nó hoạt động ổn trong một phiên bản nhưng không phải là một phiên bản khác, nhưng tiếc là tôi không có ý tưởng điều này có thể được. Chế độ SQL của chúng tôi cũng giống nhau trên cả hai máy chủ ('NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
).
Tôi có lẽ nên đề cập đến, nếu tôi thực sự chạy SQL ở trên trong Bàn làm việc, nó vẫn không hoạt động theo cùng một cách. Vì vậy, nó không thực sự là một vấn đề của Doctrine nhưng chắc chắn là một vấn đề về MySQL.
Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao.
Bạn có chắc chắn rằng chế độ SQL giống hệt nhau không? xem https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html – MrTux
Đúng, tôi thậm chí đã sao chép qua Chế độ SQL từ một máy chủ này sang máy chủ khác để kiểm tra kỹ xem chúng có giống nhau hay không. –
Bạn có STRICT_TRANS_TABLES chế độ sql, vì vậy nếu bạn chạy cả hai truy vấn om dòng lệnh, bạn sẽ có tác dụng tương tự. Có lẽ Doctrine thay đổi điều này? (Một lý do khác không sử dụng Doctrine) – Gervs