PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रेल प्रवासन:डिफ़ॉल्ट रूप से यादृच्छिक स्ट्रिंग के md5 के लिए postgresql

नोट :आप शायद brcebn's देखना चाहते हैं उत्तर दें यदि आप रेल के नवीनतम संस्करण का उपयोग कर रहे हैं।

रेल इसकी व्याख्या करने की कोशिश करेंगे:

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

रूबी कोड और :डिफ़ॉल्ट => md5(...) . के रूप में रूबी में कुछ भी मतलब नहीं है। यदि आप इसे उद्धृत करते हैं, तो रेल सोचेंगे कि यह एक स्ट्रिंग है और uniqueid के लिए डिफ़ॉल्ट मान बनाएं स्ट्रिंग 'md5(random()::text)' और वह मदद नहीं करेगा।

यदि आप कॉलम डिफ़ॉल्ट में फ़ंक्शन कॉल का उपयोग करना चाहते हैं, तो आप तालिका बदलें हाथ से:

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 delete हटाएं और struct.sql . का उपयोग करें बजाय। ध्यान दें कि SQL स्कीमा डंप 3.2 तक टूट गए थे और विभिन्न रेल संस्करणों में स्कीमा लोडिंग समस्याएं हैं (लेकिन आप हमेशा psql कर सकते हैं उसके आसपास आपका रास्ता)। ऊपर की तरफ, SQL स्कीमा डंप फैंसी चीजों का ट्रैक रखेगा असली विदेशी कुंजी, बाधाओं की जांच, ट्रिगर, ...

BTW, यदि आप वास्तव में SHA चाहते हैं तो आप <को देखना चाहेंगे। कोड>पाचन 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. एकल पैरामीटर में एकाधिक मान पास करना

  2. ओवरलैपिंग समय अंतराल को मर्ज करें, कैसे?

  3. Postgresql में गतिशील रूप से जेनरेट किया गया कर्सर

  4. Hadoop पर स्कूप:NoSuchMethodError:com.google.common.base.Stopwatch.createStarted ()

  5. क्या पोस्टग्रेज में डेटाबेस लेनदेन में संग्रहीत कार्यविधियाँ चलती हैं?