2016-02-25 63 views
0

我有用UTF-8編寫的mysql數據庫和使用hibernate編寫的java應用程序。當我在eclipse中運行應用程序時,一切都很好。但是在不同機器上的生產中,從DB返回的值已損壞。 我打印的值記錄(立即得到它們),我清楚地看到,我從數據庫中獲得的值在生產中損壞。mysql utf-8從一臺機器返回亂碼

DB本身對於這兩種環境都是相同的DB。值存儲正常。

任何想法可能是什麼原因呢?

UPDATE:

我忘了說,它有時會發生。我認爲在50%的時間內它工作正常。

更新2:

這裏是hibernate.cfg.xml中:

<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://myDB:3306/myApp?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8</property> 
    <property name="hibernate.connection.username">username</property> 
    <property name="hibernate.connection.password">password</property> 
    <!-- <property name="hibernate.connection.pool_size">10</property> --> 
    <property name="hibernate.connection.isolation">2</property> 
    <property name="show_sql">true</property> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.hbm2ddl.auto">update</property> 


    <property name="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</property> 
    <property name="hibernate.hikari.minimumIdle">5</property> 
    <property name="hibernate.hikari.maximumPoolSize">10</property> 
    <property name="hibernate.hikari.idleTimeout">30000</property> 

    <mapping class="someclass1"/>   
    <mapping class="someclass2"/>   
    <mapping class="someclass3"/>   
    <mapping class="someclass4"/>    

    </session-factory> 
</hibernate-configuration> 
+0

「我打印值記錄(讓他們之後),我清楚地看到,我從數據庫獲取值在生產中被損壞。」 - 那麼,這可能是你如何記錄的問題。如果沒有*至少*看到代碼,並且理想的是配置,很難說出有什麼問題。 –

回答

0

參考網址:https://docs.jboss.org/exojcr/1.12.13-GA/developer/en-US/html/ch-db-configuration-hibernate.html

請確認在生產環境中是否有數據源配置屬性 - useUniCode和characterEncoding設置正確。
例子:

<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/exodb?relaxAutoCommit=true&amp;amp;autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf8"/> 
+0

我的hibernate.cfg.xml位於我的一個罐子裏,我猜它正在被使用。請在我的原始問題中查看其內容。 –

+0

我還在代碼中打印了連接utl,並且看到它出現在hibernate.cfg.xml中 –

相關問題