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

миграция на релси:postgresql за md5 на произволен низ по подразбиране

Забележка :Вероятно искате да разгледате brcebn's отговорете, ако използвате по-нова версия на Rails.

Rails ще се опита да интерпретира това:

t.string :uniqueid, default: md5(random()::text)

като Ruby код и :default => md5(...) не означава нищо в Ruby. Ако го цитирате, тогава Rails ще помисли, че е низ и ще направи стойността по подразбиране за uniqueid низът 'md5(random()::text)' и това няма да помогне.

Ако искате да използвате извикване на функция в колона по подразбиране, можете да направите alter table на ръка:

connection.execute(%q{
    alter table your_table alter column uniqueid set default md5(random()::text)
})

Това ще ви осигури желаното по подразбиране в базата данни, но може да забележите, че не се споменава новото по подразбиране във вашия schema.rb . Ако искате използваема схема, тогава ще трябва да използвате вместо това SQL схема, като поставите това във вашия application.rb :

config.active_record.schema_format = :sql

След това изтрийте своя schema.rb и използвайте structure.sql вместо. Обърнете внимание, че изхвърлянията на SQL схеми бяха повредени до 3.2 и има проблеми със зареждането на схеми в различни версии на Rails (но винаги можете да psql < structure.sql вашият път около това). От друга страна, изхвърлянията на SQL схеми ще следят фантастични неща, истински външни ключове, ограничения за проверка, тригери, ...

Между другото, ако наистина искате SHA, ще искате да погледнете digest функция от pgcrypto .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Регистрационният файл на Postgres съдържа:липсваща част номер 0 за тост стойност 815441 в pg_toast_2619

  2. Не може да се свърже с https://api.elephantsql.com от pg admin

  3. Достъп до отдалечен Postgres сървър с pgAdmin

  4. добър postgresql клиент за windows?

  5. Защо да използвате IS DISTINT FROM - Postgres