Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Giá trị mặc định không hợp lệ cho dấu thời gian khi không có giá trị mặc định nào được cung cấp.

Mặc dù @jsnplank nói đúng rằng dấu thời gian được xử lý khác nhau và bạn nên cân nhắc sử dụng kiểu dữ liệu ngày giờ cho 2 cột cụ thể này, tuy nhiên, anh ấy không giải thích được thông báo lỗi.

Thông báo lỗi rất có thể là kết quả của sự kết hợp giữa cách mysql xử lý các trường dấu thời gian khi không có giá trị mặc định nào được cung cấp và cài đặt chế độ sql của bạn.

  1. Bạn xác định cả hai cột dấu thời gian là không rỗng, không có bất kỳ giá trị mặc định cụ thể nào được đặt. Điều này có nghĩa là giá trị mặc định của cột dấu thời gian đầu tiên sẽ là current_timestamp () và cũng sẽ được cập nhật thành current_timestamp () bất cứ khi nào bản ghi thay đổi. Đây là lý do tại sao trường dấu thời gian đầu tiên không tạo ra thông báo lỗi, bất kể trường nào trong số 2 là trường đầu tiên.

    Tuy nhiên, giá trị mặc định của cột dấu thời gian không rỗng thứ 2 sẽ là '0000-00-00 00:00:00' nếu bạn không xác định rõ ràng giá trị mặc định.

    Xem bài đăng trên blog này để biết thêm chi tiết .

  2. Có thể là no_zero_date chế độ sql cũng được bật trên máy chủ của bạn một cách rõ ràng hoặc là một phần của chế độ sql nghiêm ngặt. Chế độ sql này tạo ra lỗi nếu bạn muốn đặt '0000-00-00 00:00:00' làm giá trị mặc định hoặc muốn chèn giá trị này vào bất kỳ trường ngày nào.

Vì vậy, bạn có thể sử dụng kiểu dữ liệu dấu thời gian trong bảng của mình, nhưng hãy đặt kiểu thứ hai là giá trị vô hiệu hoặc cung cấp 0 hoặc bất kỳ ngày hợp lệ nào (chẳng hạn như kỷ nguyên) làm giá trị mặc định rõ ràng.

Vì bạn đang đánh dấu ngày bắt đầu và ngày kết thúc bằng các trường này, nên nhập ngày giờ thay vì dấu thời gian làm kiểu dữ liệu có thể là một ý tưởng hay.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bạn chèn một hằng số PHP vào một truy vấn SQL?

  2. Bạn có thể bỏ qua chuẩn bị PDO nếu không có phần giữ chỗ / dữ liệu động trong một truy vấn không?

  3. SQL:Tạo một bảng quan hệ với 2 auto_increment khác nhau

  4. Tính lâu dài của các tham chiếu và tham gia trong MySQL là gì?

  5. Cách tìm các hàng có giá trị chứa chữ thường