Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rails 3.2 + MySQL:Kesalahan:Bidang 'created_at' tidak memiliki nilai default:INSERT INTO

Saya baru saja mengalami sesuatu yang serupa pada instalasi baru MySql di Mac OS.

Saya akhirnya mempersempitnya menjadi kombinasi versi MySql yang lebih baru yang mengaktifkan "mode ketat" secara default, dan proyek saya memiliki tabel dengan beberapa batasan yang dipertanyakan. Tabel yang dimaksud adalah "join table" yang digunakan dalam :has_and_belongs_to_many hubungan. Entah bagaimana tabel itu dibuat dengan :created_at , dan :updated_at atribut yang memiliki batasan :null => false pada mereka. Rails 3.2 tidak secara otomatis mengisi bidang stempel waktu untuk tabel gabungan :habtm hubungan. Saat mode ketat dimatikan, MySql hanya akan mengisi kolom dengan tanggal nol, seperti 0000-00-00 00:00:00 . Dengan mengaktifkan mode ketat, itu menimbulkan pengecualian.

Untuk memperbaiki masalah ini, saya menjalankan migrasi untuk mengizinkan bidang stempel waktu menjadi nol. Seperti ini:

class ChangeNullableForTimestampsOnThing1sThing2s < ActiveRecord::Migration
  def up
    change_column(:thing1s_thing2s, :created_at, :datetime, :null => true)
    change_column(:thing1s_thing2s, :updated_at, :datetime, :null => true)
  end

  def down
    change_column(:thing1s_thing2s, :created_at, :datetime, :null => false)
    change_column(:thing1s_thing2s, :updated_at, :datetime, :null => false)
  end
end

Sejujurnya, mungkin lebih baik untuk membuang kolom saja jika Anda tidak membutuhkannya, tetapi kami memiliki beberapa kasus khusus di mana mereka benar-benar disetel secara manual.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah instalasi RMySQL dengan Mysql 5.5

  2. Terlalu banyak koneksi menggunakan Hibernate dan mysql

  3. Membatasi port MySQL 3306 ke localhost dengan IPTABLES

  4. Memahami MySQL key_len di Jelaskan Pernyataan

  5. Bungkus elemen array dalam div berdasarkan nilai yang sama