Bonjour à tous,

Je doit migrer une base de donné PGSQL qui autorise les types DATE et DATETIME NULL vers MySQL qui les autorise aussi mais en enlevant les modes NO_ZERO_DATE,NO_ZERO_IN_DATE et aussi (je croit) STRICT_TRANS_TAB qui sont des modes activés par defaut.

Je me connecte avec l'utilisateur root.

Voici la procédure que j'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
SELECT @@sql_mode;
// il me renvoie les modes par défault de mysql.
 
SET @@sql_mode = '';
SET GLOBAL sql_mode = '';
SET SESSION sql_mode = '';
 
// Pour la variable de tous ses modes (jusque la tout fonctionne à merveille)
 
SET @@sql_mode='ALLOW_INVALID_DATES, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION'
SET GLOBAL sql_mode = 'ALLOW_INVALID_DATES, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION';
SET SESSION sql_mode = 'ALLOW_INVALID_DATES, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION';
 
// Mise à jour de la variable sql_mode pour garder que les modes que j ai besoin.
 
// Puis quand je vérifie
SELECT @@sql_mode;
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
 
// Les trois requètes me renvoie le même résultat soit:
// ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION,  TRADITIONAL, NO_AUTO_CREATE_USER
// qui sont les modes actifs par default.
En gros, a chaque fois mysql me remet la valeur par défaut de sql_mode.

Dans le fichier de conf de mysqld , j'ai aussi retiré la variable sql_mode.

J'ai pas mal cherché, j'ai vue qu'il y a plein der tutos dessus ainsi que la doc officielle de MySQL mais rien à faire.
J'ai l'impression de faire les bonnes manipes, mais il y a surement quelque chose que je n'est pas compris ou oublier.

Un petit coup de pouce ferai le plus grand bien.
Merci d'avance.