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

रेल 3.2 + MySQL:त्रुटि:फ़ील्ड 'create_at' का कोई डिफ़ॉल्ट मान नहीं है:INSERT INTO

मैं मैक ओएस पर MySQL की एक ताजा स्थापना पर बस कुछ इसी तरह से भाग गया।

मैंने अंततः इसे डिफ़ॉल्ट रूप से "सख्त मोड" चालू करने वाले MySQL के नए संस्करणों के संयोजन तक सीमित कर दिया, और मेरी परियोजना में कुछ संदिग्ध बाधाओं के साथ एक टेबल है। विचाराधीन तालिका :has_and_belongs_to_many में उपयोग की गई "तालिका में शामिल हों" थी रिश्ता। किसी तरह वह तालिका :created_at . के साथ बनाई गई थी , और :updated_at विशेषताएँ जिनमें :null => false की बाधा थी उन पर। रेल 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. पीडीओ का उपयोग कर आउट पैरामीटर के साथ संग्रहित प्रक्रिया को कॉल करना

  2. पीडीओ के लिए वैकल्पिक ::lastInsertId / mysql_insert_id

  3. MySQL में रो वर्जनिंग

  4. मैं mySQL और PHP से बहुआयामी सरणी के रूप में परिणाम कैसे प्राप्त करूं?

  5. डुप्लिकेट टेक्स्टफील्ड से डेटाबेस में डालें यदि खाली नहीं है php sql