Câu hỏi Giá trị mặc định không hợp lệ cho 'dateAdded'


Tôi đã có một vấn đề ngu ngốc với SQL mà tôi không thể sửa chữa.

ALTER TABLE `news`
 ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 THÊM PRIMARY KEY (`dateAdded`)

Lỗi:

(#1067)Invalid default value for 'dateAdded'

Ai đó có thể giúp tôi được không?


76
2018-01-25 15:58


gốc


Đây có thể là một câu hỏi ngu ngốc, nhưng tại sao bạn AUTO_INCREMENT  DATETIME ? - jave.web


Các câu trả lời:


CURRENT_TIMESTAMP chỉ được chấp nhận vào TIMESTAMP lĩnh vực. DATETIME các trường phải được để trống bằng giá trị mặc định null hoặc không có giá trị mặc định nào cả - giá trị mặc định phải là giá trị không đổi, không phải là kết quả của biểu thức.

tài liệu liên quan: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Bạn có thể giải quyết vấn đề này bằng cách đặt trình kích hoạt sau chèn vào bảng để điền vào giá trị "hiện tại" trên bất kỳ bản ghi mới nào.


121
2018-01-25 16:05



Nó trông giống như mysql 5.6.5, bạn có thể sử dụng CURRENT_TIMESTAMP với các trường DATETIME. Xem dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html - Frank Schwieterman
Cảm ơn Frank, tìm thấy vấn đề này khi cố gắng nhập một db xuất khẩu từ xampp mới nhất sang phiên bản cũ hơn. - The HCD
Các HCD, Frank ... tìm thấy cùng một vấn đề xuất khẩu từ MariaDb 10.x để MariaDB 5.5 ... cảm ơn - Aukhan
Lỗi này cũng xảy ra trong mariadb 5.5. Nâng cấp lên mariadb 10 và giải quyết nó. Cảm ơn Frank - Samuel Tesler


CURRENT_TIMESTAMP là phiên bản cụ thể và hiện được phép cho DATETIME các cột như phiên bản 5.6.

Xem Tài liệu MySQL.


44
2017-09-17 10:44



bạn có chắc không ? Tôi nhận được lỗi ở trên trong phiên bản 5.7.x - Ramesh Pareek


Cũng lưu ý khi chỉ định DATETIME như DATETIME(3) hoặc giống như trên MySQL 5.7.x, bạn cũng phải thêm cùng một giá trị cho CURRENT_TIMESTAMP(3). Nếu không nó sẽ tiếp tục ném 'Giá trị mặc định không hợp lệ'.


9
2017-07-06 08:44



Điều này giải quyết được vấn đề cho tôi trên 5.7.x. Các trường ngày giờ của tôi được định nghĩa là datetime (6) và sử dụng CURRENT_TIMESTAMP (6) đã giải quyết được sự cố - Brad
Điều này là rất đáng chú ý. - Mateus Felipe


Tôi có phiên bản mysql 5.6.27 trên LEMP và CURRENT_TIMESTAMP của tôi làm giá trị mặc định hoạt động tốt.


0
2017-10-06 14:39





mysql version 5.5 đặt giá trị mặc định datetime là CURRENT_TIMESTAMP sẽ là lỗi báo cáo bạn có thể cập nhật lên phiên bản 5.6, nó đặt giá trị mặc định datetime là CURRENT_TIMESTAMP


0
2017-12-08 06:55





Thay đổi loại từ datetime thành dấu thời gian và nó sẽ hoạt động! Tôi đã có cùng một vấn đề cho mysql 5.5.56-MariaDB - MariaDB Server Hy vọng nó có thể giúp ... xin lỗi nếu depricated


0
2017-11-13 16:23





Tôi gặp vấn đề tương tự, sau sửa chữa giải quyết vấn đề của tôi.

  • Chọn Nhập là 'TIMESTAMP'

  • KHÔNG NHẬP KHẨU bất cứ thứ gì trong LENGTH / VALUES FIELD. GIỮ NÓ 

  • Chọn CURRENT_TIMESTAMP làm giá trị mặc định.

Tôi đang sử dụng MySQL ver 5.5.56


0
2017-12-07 18:00