Author: christian.bauer(a)jboss.com
Date: 2009-04-14 10:42:50 -0400 (Tue, 14 Apr 2009)
New Revision: 10396
Modified:
trunk/examples/wiki/README.txt
trunk/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiMySQL5HibernateDialect.java
Log:
JBSEAM-4086, migrate
sfwk.org production database to UTF, enable by default
Modified: trunk/examples/wiki/README.txt
===================================================================
--- trunk/examples/wiki/README.txt 2009-04-14 14:38:48 UTC (rev 10395)
+++ trunk/examples/wiki/README.txt 2009-04-14 14:42:50 UTC (rev 10396)
@@ -85,37 +85,15 @@
INSTALLATION WITH UNICODE SUPPORT ON MYSQL
==========================================================================================
-If you want to use any non-latin characters, create the MySQL database you want to use
(or
-drop and recreate the default 'test' database) with the following options:
+The database tables in wiki-ddl.sql are automatically created with UTF8 support.
- CREATE DATABASE test CHARACTER SET utf8 COLLATE utf8_general_ci;
-
-Your database should at least have the 'character_set_database' variable set to
'utf8':
-
- mysql> show variables like '%character%';
-
+--------------------------+------------------------------------------------------------+
- | Variable_name | Value
|
-
+--------------------------+------------------------------------------------------------+
- | character_set_client | latin1
|
- | character_set_connection | latin1
|
- | character_set_database | utf8
|
- | character_set_filesystem | binary
|
- | character_set_results | latin1
|
- | character_set_server | latin1
|
- | character_set_system | utf8
|
- | character_sets_dir | /usr/local/mysql-5.0.45-osx10.4-i686/share/mysql/charsets/
|
-
+--------------------------+------------------------------------------------------------+
-
-If you keep the default latin1 encoding, exceptions will be thrown by the application as
-soon as you try to store any non-latin character.
-
Note that due to URL rewriting rules, stored wiki items (documents, uploaded files) MUST
have
at least three latin1 characters in their name! The application will prompt you with a
validation
error message when you forget that limitation and enter only non-latin1 characters in a
form.
-The wiki search engine passes search terms as request parameters in the URI. If you
require
-unicode support for search terms, you need to set an option in Tomcat to enable the
correct
-decoding of URL-encoded request parameter values to UTF-8. To do that, edit
+Furthermore, the wiki search engine passes search terms as request parameters in the URI
and allows bookmarking
+of search terms. If you require unicode support for search terms, you need to set an
option in Tomcat to
+enable the correct decoding of URL-encoded request parameter values to UTF-8. To do that,
edit
${JBOSS_HOME}/server/(default)/deploy/jboss-web.deployer/server.xml
@@ -125,4 +103,3 @@
to the <connector> declaration.
-
Modified:
trunk/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiMySQL5HibernateDialect.java
===================================================================
---
trunk/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiMySQL5HibernateDialect.java 2009-04-14
14:38:48 UTC (rev 10395)
+++
trunk/examples/wiki/src/main/org/jboss/seam/wiki/util/WikiMySQL5HibernateDialect.java 2009-04-14
14:42:50 UTC (rev 10396)
@@ -17,15 +17,25 @@
*/
public class WikiMySQL5HibernateDialect extends MySQL5InnoDBDialect {
- protected void registerVarcharTypes() {
- registerColumnType( Types.VARCHAR, "longtext" );
- registerColumnType( Types.VARCHAR, 16777215, "mediumtext" );
+ @Override
+ protected void registerVarcharTypes() {
+ // TODO: The MySQL default makes it difficult to migrate the data because
mysqldump is braindead...
+ // registerColumnType(Types.BIT, "tinyint(1)");
+
// It's pretty safe to assume that anything with more than 1024 characters
(minus length byte) should probably be
// a TEXT, not a VARCHAR which would have the "maximum row size" limit
of 65KB.
// I mean, where is the limit? If you have 20 of these VARCHAR fields on a table,
and your character set is
// UTF8, you are over the limit. Less than 20 or so should be OK. Just another
fine example of how MySQL
// protects its users from seeing its ugly internal implementation details.
- registerColumnType( Types.VARCHAR, 1023, "varchar($l)" );
- }
+ registerColumnType(Types.VARCHAR, "longtext");
+ registerColumnType(Types.VARCHAR, 16777215, "mediumtext");
+ registerColumnType(Types.VARCHAR, 1023, "varchar($l)");
+ }
+
+ // Create all tables as default UTF8!
+ @Override
+ public String getTableTypeString() {
+ return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
+ }
}