web-dev-qa-db-fra.com

La variable 'sql_mode' ne peut pas être définie sur la valeur de 'NO_AUTO_CREATE_USER'

J'utilise MySQL Workbench 8.0. J'essaie de vider les données de test dans la base de données, y compris toutes les tables, les procédures stockées et les vues avec des données.

Lorsque j'essaie d'importer, il est dit que l'importation s'est terminée avec une erreur et l'erreur est

La variable 'sql_mode' ne peut pas être définie sur la valeur de 'NO_AUTO_CREATE_USER' L'opération a échoué avec le code de sortie 1

De plus, après l'importation si je vérifie la base de données, seules les tables sont arrivées mais il n'y a aucune procédure stockée.

Comment régler cela?

10
Rajeswari ML

J'ai récemment rencontré ce problème également après avoir exporté ma base de données à partir de MySQL Workbench 6.1 CE, puis essayé de l'importer dans une version plus récente de MySQL WorkBench 8.0.11. Chacun a été installé avec le programme d'installation du serveur de communauté msi.

Après avoir fait quelques recherches, je suis tombé sur ce rapport de bogue sur le site Web MySQL: vidage Restaure créé avec 5.7.22 le 8.0.11

Le correctif qui a fonctionné pour moi était de parcourir manuellement mon fichier de vidage et de supprimer les instructions:

'NO_AUTO_CREATE_USER' qui sont situés au-dessus de chacun de vos vidages de routine dans le fichier de vidage. Déclaration pour supprimer l'exemple d'image

Après avoir fait cela, j'ai reçu l'erreur

ERREUR 1418 (HY000) à la ligne 318: cette fonction n'a aucune donnée DETERMINISTIC, NO SQL ou READS SQL DATA dans sa déclaration et la journalisation binaire est activée (vous pourriez veulent utiliser la variable log_bin_trust_function_creators moins sûre)

Mais après avoir fait référence à cette question répondue: Cette fonction n'a aucun DETERMINISTIC, NO SQL ou READS SQL DATA dans sa déclaration et la journalisation binaire est activée et en entrant simplement:

SET GLOBAL log_bin_trust_function_creators = 1;

dans le client de ligne de commande MySQL a résolu ce problème et m'a finalement permis d'importer correctement ma base de données avec toutes les tables, données, routines et fonctions vidées.

Espérons que cela fera gagner du temps aux autres.

25
Dillon

J'ai trouvé une solution de contournement, sinon la solution. Utilisez Linux pour obtenir l'utilitaire sed et exécutez les deux commandes sed comme mentionné dans mon commentaire précédent. De plus, j'avais besoin d'utiliser l'option mysqldump: --set-gtid-purged=OFF

0
pbnelson