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

Rails &Postgres:Мигрирането към change_colomn дава грешка, не може да бъде прехвърлено към тип timestamp без часова зона

В Rails това би изглеждало нещо като

class ChangeStatusUpdatedAtToDateTime < ActiveRecord::Migration
  def up
    remove_column :bookings, :status_updated_at
    add_column :bookings, :status_updated_at, :datetime
  end

  def down
    remove_column :bookings, :status_updated_at
    add_column :bookings, :status_updated_at, :time
  end
end

Ако сте имали данни, които искате да прехвърлите, можете да използвате следния код (не е тестван!):

class ChangeStatusUpdatedAtToDateTime < ActiveRecord::Migration
  def up
    add_column :bookings, :temp_status_updated_at, :datetime
    Booking.update_all("temp_status_updated_at = updated_at")
    remove_column :bookings, :status_updated_at
    rename_column :bookings, :temp_status_updated_at, :status_updated_at
  end

  def down
    add_column :bookings, :temp_status_updated_at, :time
    Booking.update_all("temp_status_updated_at = updated_at")
    remove_column :bookings, :status_updated_at
    rename_column :bookings, :temp_status_updated_at, :status_updated_at
  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. Заявка, връщаща точен брой редове

  2. Моите любими разширения на PostgreSQL - първа част

  3. Postgres INTERVAL използва стойност от таблицата

  4. Вземете обекти на обекти в една заявка в rails

  5. ~~ Оператор в Postgres