diff options
author | Paul Sadauskas <psadauskas@gmail.com> | 2012-01-24 14:22:24 -0700 |
---|---|---|
committer | Paul Sadauskas <psadauskas@gmail.com> | 2012-01-24 14:22:24 -0700 |
commit | 6cde635f34dc65a8c6f2d87ca995120fcf0ea25f (patch) | |
tree | c46887a9d311bb834cd74067581517e1a52ae2d2 /activerecord/lib | |
parent | b1f8ba138360cd67994d4134f57abca74f8528bc (diff) | |
download | rails-6cde635f34dc65a8c6f2d87ca995120fcf0ea25f.tar.gz rails-6cde635f34dc65a8c6f2d87ca995120fcf0ea25f.tar.bz2 rails-6cde635f34dc65a8c6f2d87ca995120fcf0ea25f.zip |
Handle nil in add_index :length option in MySQL
Our schema.rb is being generated with an `add_index` line similar to this:
add_index "foo", ["foo", "bar"], :name => "xxx", :length => {"foo"=>8, "bar=>nil}
This is the same as it was on Rails 3.1.3, however, now when that
schema.rb is evaluated, its generating bad SQL in MySQL:
Mysql::Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax
to use near '))' at line 1: CREATE UNIQUE INDEX
`xxx` ON `foo` (`foo`(8), `bar`())
This commit adds a check for nil on the length attribute to prevent the
empty parens from being output.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 560773ca86..201c05d8f5 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -541,7 +541,7 @@ module ActiveRecord if options.is_a?(Hash) && length = options[:length] case length when Hash - column_names.each {|name| option_strings[name] += "(#{length[name]})" if length.has_key?(name)} + column_names.each {|name| option_strings[name] += "(#{length[name]})" if length.has_key?(name) && length[name].present?} when Fixnum column_names.each {|name| option_strings[name] += "(#{length})"} end |