Hi,

We've been having some problems with mysql 5 and not null text columns  
(versions 5.0.67, 5.0.51a and 5.0.51b)

Mysql reports the columns as having a default of null (the column is  
actually a not null) which causes activerecord to try and insert nulls  
where it can't which makes things implode. If you do insert into foos  
values() then you do get an empty string inserted in the relevant  
column, so in that sense the column default is the empty string.

Mysql is a bit funny about text columns and defaults (it won't let you  
set one, but still seems to behave as if there is one), and there are  
other places where it's funny with defaults (eg  
missing_default_forged_as_empty_string)

If the column isn't marked as not null then the default is actually  
null. The behaviour with blobs is the same

It seems to me that MysqlColumn#extract_default could be patched to

def extract_default(default)
   if type == :binary || type == :text
     if default.blank?
       null ? nil : ''
     else
       raise ArgumentError, "#{type} columns cannot have a default  
value: #{default.inspect}"
     end
   elsif missing_default_forged_as_empty_string?(default)
     nil
   else
     super
   end
end

Does this sound reasonable? Have others run into this ?

Fred

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to