Je suis nouveau dans l'utilisation de la base de données MySql, j'ai téléchargé EasyPHP-Devserver-16.1, lorsque j'exécute mon serveur pour mettre à jour mon schéma de base de données, ce message d'erreur apparaît.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: la table 'performance_schema.session_variables' n'existe pas
Je sais que le problème ne vient pas de mon fichier de configuration Spring mais du serveur mysql.
public class Configurations {
protected static final String PROPERTY_NAME_DATABASE_DRIVER = "com.mysql.jdbc.Driver";
protected static final String PROPERTY_NAME_DATABASE_PASSWORD = "";
protected static final String PROPERTY_NAME_DATABASE_URL = "jdbc:mysql://127.0.0.1:3306/quraa";
protected static final String PROPERTY_NAME_DATABASE_USERNAME = "root";
private static final String PROPERTY_PACKAGES_TO_SCAN = "com.med.quraa.models";
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter){
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
entityManagerFactoryBean.setPackagesToScan(PROPERTY_PACKAGES_TO_SCAN);
return entityManagerFactoryBean;
}
@Bean
public DriverManagerDataSource dataSource(){
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName(PROPERTY_NAME_DATABASE_DRIVER);
ds.setUrl(PROPERTY_NAME_DATABASE_URL);
ds.setUsername(PROPERTY_NAME_DATABASE_USERNAME);
ds.setPassword(PROPERTY_NAME_DATABASE_PASSWORD);
return ds;
}
@Bean
public JdbcTemplate jdbcTemplate(){
JdbcTemplate jdbcTemplate=new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource());
return jdbcTemplate;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter(){
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabase(Database.MYSQL);
adapter.setShowSql(true);
adapter.setGenerateDdl(true);
adapter.setDatabasePlatform("org.hibernate.dialect.MySQL5InnoDBDialect");
return adapter;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Notez que j'ai testé org.Apache.Tomcat.dbcp.dbcp.BasicDataSource
aussi mais j'ai eu la même erreur, cela signifie que org.springframework.jdbc.datasource.DriverManagerDataSource
n'a aucun problème avec ça
Résolu ... J'ai ouvert cmd puis:
cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
puis exécuté cette ligne de commande:
mysql_upgrade -u root -p --force
Un redémarrage du serveur est nécessaire!
Mettez d'abord à niveau votre MySql
serveur pour résoudre le problème en exécutant cette commande:
mysql_upgrade -u root -p --force
Alors redémarrer le serveur:
Voici comment y remédier (à partir de la ligne de commande):
mysql -u {user} -p
mysql> set @@global.show_compatibility_56=ON;
Dans /etc/my.cnf:
show_compatibility_56 = 1
celui-ci fonctionne vraiment pour moi sans mettre à jour mysql. Après cela, vous devez redémarrer mysql.
Le schéma de performances n'est pas installé par défaut.
Pour vérifier, vous pouvez exécuter la commande
SHOW VARIABLES LIKE 'performance_schema';
Supposons maintenant que vous verrez OFF
Pour l'activer, démarrez le serveur avec la variable performance_schema activée. Par exemple, utilisez ces lignes dans votre fichier my.cnf:
[mysqld]
performance_schema=ON
Vous trouverez plus de détails dans la documentation officielle:
https://dev.mysql.com/doc/refman/en/performance-schema-quick-start.html
Comme certaines personnes ont posé des questions sur la partie du redémarrage du serveur, je posterai ma réponse en tenant compte de cette partie:
1 .Allez dans le répertoire du dossier d'installation de MySQL dans mon cas c'était: C:\Program Files\MySQL\MySQL Server 5.7\bin.
Ouvrez CMD dans ce répertoire, puis exécutez la commande "mysql_upgrade -u root -p".
Si votre schéma était protégé par un mot de passe, vous devez entrer le mot de passe lorsqu'il est demandé.
Cela permettra de vérifier toutes les tables de tous les schémas, vous devez donc attendre la fin de la vérification.
À la fin, le message suivant devrait apparaître:
Upgrade process completed successfully. Checking if update is needed.
open task manager-->services-->right click on the services MySQL server and MySQL router-->restart them.