Beim deployen und initialisieren der DB werden Umlaute nicht gespeichert

Raphalon

Aktives Mitglied
Hallo,

wenn ich meine Applikation via mvn deploye, wird durch die Hibernate-Einstellungen (siehe unten) jedes mal die DB neu initialisiert. Die Befehle stehen in der import.sql. Leider werden dabei Umlaute nicht gespeichert.

Das Merkwürdige: die Anwendung selbst speichert die Umlaute in der DB. Nur bei der Initialisierung klappt das nicht.

  • In eclipse ist eigentlich alles korrekt eingestllt. Das Text file encoding für den Workspace ist Cp1252.
  • Unter Preferences > Content Types gibt es kein SQL - File, für das ein Encoding eingestellt werden könnte.
  • Für die Datei import.sql ist der Default ("inherited from container: UTF-8") eingestellt.
  • da ich mvn verwende, habe ich als Zeichensatz auch UTF-8 eingestellt - siehe unten das pluginManagement
  • wenn ich die DML - Befehle manuell z.B. in phpMyAdmin ausführe, werden auch die Umlaute gespeichert
  • für die DB ist eingstellt: MySQL-Zeichensatz: UTF-8 Unicode (utf8)
  • der Zeichensatz / Kollation der MySQL-Verbindung ist "utf8-general-ci"
  • an Hibernate kann es eigentlich auch nicht liegen, weil die Anwendung selbst ja die Umlaute speichert
  • ich habe auch schon die DB neu aufgesetzt.
Wo kann ich noch nachsehen?

[XML]<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="primary" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/kds</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>[/XML]
[XML]<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding> <!-- vorher: ISO-8859-1 -->
</configuration>
</plugin>[/XML]

Gruß,

Raphalon
 

Raphalon

Aktives Mitglied
Habe den Connection String via Jboss-Console ergänzt als
Code:
jdbc:mysql://localhost:3306/kds?useUnicode=true&characterEncoding=utf8
. Er wurde korrekt in die standalone.xml übernommen. Leider klappt es immer noch nicht. Habe auch folgendes noch erfolglos versucht https://community.jboss.org/message/643825.
Code:
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.44, for apple-darwin8.11.1 (i386) using  EditLine wrapper

Connection id:		58
Current database:	kds
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.1.44 Source distribution
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Uptime:			1 hour 6 min 53 sec

Threads: 21  Questions: 10164  Slow queries: 0  Opens: 690  Flush tables: 1  Open tables: 4  Queries per second avg: 2.532
--------------
 
M

maki

Gast
Hi,

In eclipse ist eigentlich alles korrekt eingestllt. Das Text file encoding für den Workspace ist Cp1252.
da ich mvn verwende, habe ich als Zeichensatz auch UTF-8 eingestellt - siehe unten das pluginManagement
musst dich für einen Zeichensatz entscheiden, persönlich tendiere ich meist zu utf-8.

Das hier:
[xml]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding> <!-- vorher: ISO-8859-1 -->
</configuration>
</plugin>
[/xml]
konfiguriert nur den Compiler, du willst das Encoding für die Resources setzen: Maven Resources plugin - Specifying a character encoding scheme

Nutzt du schon das m2e Plugin für Eclipse?
 

Raphalon

Aktives Mitglied
Die DB hatte ich bereits zuvor neu erstellt, weil ja bereits in dem von Dir angegebenen Link (http://www.java-forum.org/allgemeine-java-themen/125496-probleme-stringvergleichen-windows-linux.html) darauf hingewiesen wurde.

Habe aber jetzt die Lösung gefunden: im boot.log des JBoss wurde ein falsches file.encoding angezeigt. Habe daher nun (zuhause auf dem Mac) in meinem Profile
Code:
export JAVA_OPTS=-Dfile.encoding=UTF-8
hinzugefügt. Die Variable wird dann entsprechend vom Startskript gelesen und verwendet. Werde es morgen noch in der Arbeit auf dem Windows-Rechner entsprechend umsetzen, gehe aber davon aus, dass dies auch dort die Lösung sein wird.

Zu Testzwecken habe ich dann noch die anderen Optionen weggenommen, wie z.B. den Connect-String
Code:
jdbc:mysql://localhost:3306/kds?useUnicode=true&characterEncoding=utf8
wieder ersetzt durch
Code:
jdbc:mysql://localhost:3306/kds
. Die Umlaute wurden auch dann korrekt gespeichert.
 

Ähnliche Java Themen

Neue Themen


Oben