Diff
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (765 => 766)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb 2007-10-11 11:27:00 UTC (rev 765)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb 2007-10-16 08:02:27 UTC (rev 766)
@@ -375,7 +375,7 @@
if driver =~ /mysql/i
div = url =~ /\?/ ? '&' : '?'
- url = ""
+ url = ""
@config[:url] = url
end
Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb (765 => 766)
--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb 2007-10-11 11:27:00 UTC (rev 765)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb 2007-10-16 08:02:27 UTC (rev 766)
@@ -7,7 +7,7 @@
warn "AR-JDBC MySQL on JRuby does not support sockets"
end
config[:port] ||= 3306
- config[:url] ||= "jdbc:mysql://#{config[:host]}:#{config[:port]}/#{config[:database]}"
+ config[:url] ||= "jdbc:mysql://#{config[:host]}:#{config[:port]}/#{config[:database]}?zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&useUnicode=true&characterEncoding=utf8"
config[:driver] = "com.mysql.jdbc.Driver"
jdbc_connection(config)
end
@@ -122,7 +122,7 @@
end
def create_table(name, options = {}) #:nodoc:
- super(name, {:options => "ENGINE=InnoDB"}.merge(options))
+ super(name, {:options => "ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin"}.merge(options))
end
def rename_table(name, new_name)
Modified: trunk/activerecord-jdbc/src/java/JDBCMySQLSpec.java (765 => 766)
--- trunk/activerecord-jdbc/src/java/JDBCMySQLSpec.java 2007-10-11 11:27:00 UTC (rev 765)
+++ trunk/activerecord-jdbc/src/java/JDBCMySQLSpec.java 2007-10-16 08:02:27 UTC (rev 766)
@@ -78,6 +78,12 @@
bl.replace(i, 1, rep);
i+=1;
}
+
+ if(!replacementFound) {
+ return string;
+ }
+
+
return recv.getRuntime().newStringShared(bl);
}
}
Modified: trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java (765 => 766)
--- trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-10-11 11:27:00 UTC (rev 765)
+++ trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-10-16 08:02:27 UTC (rev 766)
@@ -648,6 +648,7 @@
if(vs == null || rs.wasNull()) {
return runtime.getNil();
}
+
return RubyString.newUnicodeString(runtime, vs);
}
}
Added: trunk/activerecord-jdbc/test/mysql_multibyte_test.rb (0 => 766)
--- trunk/activerecord-jdbc/test/mysql_multibyte_test.rb (rev 0)
+++ trunk/activerecord-jdbc/test/mysql_multibyte_test.rb 2007-10-16 08:02:27 UTC (rev 766)
@@ -0,0 +1,6 @@
+require 'jdbc_common'
+require 'db/mysql'
+
+class MySQLMultibyteTest < Test::Unit::TestCase
+ include MultibyteTestMethods
+end
Modified: trunk/activerecord-jdbc/test/simple.rb (765 => 766)
--- trunk/activerecord-jdbc/test/simple.rb 2007-10-11 11:27:00 UTC (rev 765)
+++ trunk/activerecord-jdbc/test/simple.rb 2007-10-16 08:02:27 UTC (rev 766)
@@ -147,4 +147,11 @@
assert_equal "テスト", rs.getString(1)
assert_equal "本文", rs.getString(2)
end
+
+ def test_chinese_word
+ chinese_word = '中文'
+ new_entry = Entry.create(:title => chinese_word)
+ new_entry.reload
+ assert_equal chinese_word, new_entry.title
+ end
end