Set field encoding to client_encoding for mysql adapter.
This commit is contained in:
parent
765b8aa05c
commit
0d435cc24b
3
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
Normal file → Executable file
3
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
Normal file → Executable file
@ -469,7 +469,8 @@ def columns(table_name)#:nodoc:
|
|||||||
sql = "SHOW FULL FIELDS FROM #{quote_table_name(table_name)}"
|
sql = "SHOW FULL FIELDS FROM #{quote_table_name(table_name)}"
|
||||||
execute_and_free(sql, 'SCHEMA') do |result|
|
execute_and_free(sql, 'SCHEMA') do |result|
|
||||||
each_hash(result).map do |field|
|
each_hash(result).map do |field|
|
||||||
new_column(field[:Field], field[:Default], field[:Type], field[:Null] == "YES", field[:Collation], field[:Extra])
|
field_name = set_field_encoding(field[:Field])
|
||||||
|
new_column(field_name, field[:Default], field[:Type], field[:Null] == "YES", field[:Collation], field[:Extra])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
4
activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb
Normal file → Executable file
4
activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb
Normal file → Executable file
@ -269,6 +269,10 @@ def configure_connection
|
|||||||
def version
|
def version
|
||||||
@version ||= @connection.info[:version].scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
|
@version ||= @connection.info[:version].scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_field_encoding field_name
|
||||||
|
field_name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
8
activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
Normal file → Executable file
8
activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
Normal file → Executable file
@ -559,6 +559,14 @@ def select(sql, name = nil, binds = [])
|
|||||||
def version
|
def version
|
||||||
@version ||= @connection.server_info.scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
|
@version ||= @connection.server_info.scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_field_encoding field_name
|
||||||
|
field_name.force_encoding(client_encoding)
|
||||||
|
if internal_enc = Encoding.default_internal
|
||||||
|
field_name = field_name.encoding(internal_enc)
|
||||||
|
end
|
||||||
|
field_name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
2
activerecord/test/cases/base_test.rb
Normal file → Executable file
2
activerecord/test/cases/base_test.rb
Normal file → Executable file
@ -585,8 +585,6 @@ def test_readonly_attributes
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_unicode_column_name
|
def test_unicode_column_name
|
||||||
skip "not on mysql" if current_adapter?(:MysqlAdapter)
|
|
||||||
columns = Weird.columns_hash.keys
|
|
||||||
weird = Weird.create(:なまえ => 'たこ焼き仮面')
|
weird = Weird.create(:なまえ => 'たこ焼き仮面')
|
||||||
assert_equal 'たこ焼き仮面', weird.なまえ
|
assert_equal 'たこ焼き仮面', weird.なまえ
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user