GNU/Linux >> Tutoriels Linux >  >> Linux

Hibernate + MySQL :comment définir l'encodage utf-8 pour la base de données et les tables

Vous pouvez également créer des bases de données avec encodage.
Utilisez simplement phpMyAdmin pour la création de la base de données/table.

Il y a certains paramètres d'URL que vous devez spécifier dans l'URL des paramètres d'hibernation pour avoir la connexion en utilisant UTF8 :

<!-- Database Settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--  for performance reasons changed to MyISAM from org.hibernate.dialect.MySQLInnoDBDialect -->
<property name="dialect">org.openmeetings.app.hibernate.utils.MySQL5MyISAMDialect</property>
<property name="connection.url">jdbc:mysql://localhost/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8</property>    

<property name="hibernate.connection.CharSet">utf8</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>

Vous n'avez pas besoin de définir l'ensemble de l'encodage dans la base de données sur utf8Seulement si vous utilisez

<!-- Database Scheme Auto Update -->
<property name="hbm2ddl.auto">update</property>   

Vous DEVEZ définir l'encodage par défaut de MySQL sur utf8. Provoquer le hbm2dll utilisera l'encodage par défaut de la base de données.

Vous pouvez toujours utiliser hbm2ddl.auto , et modifiez manuellement les tables de la base de données pour avoir un classement utf8.

Si vous n'utilisez pas hbm2ddl.auto , vous pouvez simplement créer les tables avec votre encodage préféré. Pas besoin de définir la base de données sur un encodage spécial.

Sébastien


Envisagez de modifier la configuration de l'URL de connexion comme ceci :

<property name="hibernate.connection.url">
    jdbc:mysql://localhost/yourdatabase?UseUnicode=true&amp;characterEncoding=utf8
</property>

Cela résout l'affaire.


Comment changer l'encodage en UTF-8 ?

J'ai utilisé une classe de dialecte local qui a étendu le MySQLDialect et changé la chaîne de type table :

public class LocalMysqlDialect extends MySQLDialect {
    @Override
    public String getTableTypeString() {
        return " DEFAULT CHARSET=utf8";
    }
}

J'étendais en fait le MySQL5InnoDBDialect tapez donc j'utilisais vraiment :

public class LocalMysqlDialect extends MySQL5InnoDBDialect {
    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
    }
}

Linux
  1. Comment copier des tables MySQL entre des bases de données

  2. Comment créer une base de données dans MySQL à l'aide de la ligne de commande

  3. MySQL :comment sauvegarder (vider) et restaurer une base de données à l'aide de mysqldump

  4. Comment installer et configurer mysql 8 sur Ubuntu 20.04

  5. Comment autoriser la connexion à distance au serveur de base de données MySQL

Comment créer un serveur de base de données MySQL et une base de données dans Azure Cloud

Créer une base de données et une table MySQL à l'aide de PHP dans XAMPP

Comment configurer une base de données à l'aide de l'assistant de base de données MySQL

Comment effectuer une sauvegarde et restaurer la base de données MSSQL/MySQL dans Plesk

Comment réparer une base de données MySQL ?

Comment optimiser une base de données MySQL ?