I have a mysql database that I am trying to use migrations on. The
problem that I am having is that when I create a blob field in my
migration file like so:
t.column “data”, :binary, :limit => 15.megabytes, :null => false
rails changes it to this in the schema:
t.column “data”, :binary, :default => “”, :null => false
not only is this not what I wanted because it removes the size
restrictions it also blows up when you try to do rake db_import_schema
with this error:
site_path>rake db_schema_import
(in D:/sites/itsthes/itsthes-ruby/itsthes)
rake aborted!
undefined method `string_to_binary’ for
ActiveRecord::ConnectionAdapters::ColumnDefinition:Class
Is anyone else know why this is happening? Does anyone else have a
problem with rails converting values in the schema.rb to something
other than what is in the migration file?
Thanks,
Mark
–
Thanks Jarkko,
I was noticing that too when I went to call through the codebase
looking for the method. I was able to get around my problem by loading
my binary requirements into a later migration file, which overwrote
the schema.rb
On 1/9/06, Jarkko L. [email protected] wrote:
ActiveRecord::ConnectionAdapters::ColumnDefinition:Class
not in ColumnDefinition where it should be. This is a reported bug
Thanks,
http://lists.rubyonrails.org/mailman/listinfo/rails
–
On 9.1.2006, at 8.35, M Daggett wrote:
not only is this not what I wanted because it removes the size
Is anyone else know why this is happening? Does anyone else have a
problem with rails converting values in the schema.rb to something
other than what is in the migration file?
Mark,
I don’t know about the changing schema definition but I know why your
migration fails. string_to_binary is for some reason in Column class,
not in ColumnDefinition where it should be. This is a reported bug
(see [1] and [2]). I’m preparing a patch with failing tests at the
moment, will post it tonight.
//jarkko
[1] http://dev.rubyonrails.org/ticket/3101
[2] http://dev.rubyonrails.org/ticket/3212
I know this is probably a bad thing to do, but I modified the
ColumnDefinition class inside schema_definitions.rb to include the
self.string_to_binary method like so:
class ColumnDefinition < Struct.new(:base, :name, :type, :limit,
:default, :null) #:nodoc:
def to_sql
column_sql = “#{base.quote_column_name(name)}
#{type_to_sql(type.to_sym, limit)}”
add_column_options!(column_sql, :null => null, :default =>
default)
column_sql
end
# added to fix missing method error when running rake tests
# Used to convert from Strings to BLOBs
def self.string_to_binary(value)
value
end
It appears to be working now for both unit testing and migrations…
though I may have broken something else I have not found yet!
Mark
On 1/9/06, M Daggett [email protected] wrote:
On 9.1.2006, at 8.35, M Daggett wrote:
moment, will post it tonight.
Jarkko L.
–
I am Mark Daggett and I approve this message.
–