Mysql
 sql >> база данни >  >> RDS >> Mysql

Rails 3.2 + MySQL:Грешка:Полето 'created_at' няма стойност по подразбиране:INSERT INTO

Току-що попаднах на нещо подобно при нова инсталация на MySql на Mac OS.

Най-накрая го стесних до комбинацията от по-нови версии на MySql, включващи "строг режим" по подразбиране, и моят проект, който има таблица с някои съмнителни ограничения върху нея. Въпросната таблица беше "таблицата за присъединяване", използвана в :has_and_belongs_to_many връзка. По някакъв начин тази таблица беше създадена с :created_at и :updated_at атрибути, които имат ограничение от :null => false на тях. Rails 3.2 не попълва автоматично полетата за времеви отпечатъци за таблици за присъединяване на :habtm взаимоотношения. Когато стриктният режим е изключен, MySql просто ще попълни колонките с нулирани дати, като 0000-00-00 00:00:00 . При включен строг режим възниква изключение.

За да отстраня проблема, изпълних миграция, за да позволя на полетата за времеви отпечатъци да бъдат нулеви. Като това:

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

Честно казано, вероятно е по-добре просто да махнете колоните, ако не ви трябват, но имаме няколко специални случая, в които те всъщност се задават ръчно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL Добавяне на работни дни към дата

  2. Попълнете липсващите празнини в заявката за период от време с помощта на календарна таблица

  3. Python peewee save() не работи според очакванията

  4. mysql КЪДЕ В масив низ / потребителско име

  5. Преобразуване на PHP диапазон от време в MYSQL отделни дати