Maison > Article > base de données > Comment résoudre l'erreur dans la fonction de création MYSQL
Lors de l'utilisation de la base de données MySQL, il arrive parfois que la fonction MySQL ne puisse pas être créée. Ce qui suit vous apprendra une méthode pour résoudre le problème selon lequel les fonctions MySQL ne peuvent pas être créées pour votre référence. J'espère que cela aide tout le monde.
Cas 1 :
Actuellement dans le projet, une erreur se produit lors de l'exécution de la fonction qui crée mysql
Le message d'erreur de la fonction de création mysql est le suivant :
🎜>
Code d'erreur : 1227 . Accès refusé ; vous avez besoin d'au moins un des) privilèges SUPER pour cette opérationVérifiez d'abord si la fonction de création est activée. la fonction de création est activée est la suivante :-- 查看是否开启创建函数的功能 show variables like '%func%'; -- 开启创建函数的功能 set global log_bin_trust_function_creators = 1;Après avoir exécuté le SQL, vous constatez qu'il a été activé. Vérifiez si votre SQL est écrit correctement (car le SQL a été donné par d'autres, c'est bien. dans l'environnement d'autres personnes, mais cela peut être possible dans votre propre environnement). J'ai soudainement découvert qu'il y avait effectivement un problème avec SQL. Parce que le SQL qu'il a créé avait un utilisateur désigné, le problème est survenu ci-dessous :
DROP FUNCTION IF EXISTS `nextval`; DELIMITER ;; CREATE DEFINER=`devop`@`%` FUNCTION `nextval`(`seq_name` VARCHAR(50)) RETURNS varchar(20) CHARSET utf8 BEGIN DECLARE seq_max BIGINT(20); UPDATE sequenceconftable SET `max` = `max` + NEXT WHERE NAME = seq_name; SELECT `max` INTO seq_max FROM sequenceconftable WHERE NAME = seq_name ; RETURN seq_max; END ;; DELIMITER ;En raison de CREATE_FUNCTION. spécification, on peut le trouver. C'est le paramètre DEFINER qui peut spécifier l'utilisateur de la base de données, mais votre propre bibliothèque n'est pas cet utilisateur, donc cela pose des problèmes. Le problème est maintenant résolu. -EOF-Cas 2 : Lors de la création d'une fonction définie par l'utilisateur dans MySQL, l'erreur suivante a été signalée :
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)Ceci C'est parce qu'il y a Un paramètre de sécurité n'est pas activé. La valeur par défaut de log_bin_trust_function_creators est 0, ce qui ne permet pas la synchronisation des fonctions. Si ce paramètre est activé, la création sera réussie.
mysql> show variables like '%fun%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 1 row in set (0.00 sec) mysql> set global log_bin_trust_function_creators=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%fun%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 1 row in set (0.00 sec)Si ce paramètre est activé sur le maître, pensez à activer ce paramètre également côté esclave (le salve doit être arrêté puis redémarré), sinon la création d'une fonction sur le maître entraînera le la réplication doit être interrompue. Cas 3 : Code d'erreur : 1418
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (0 ms taken)
Analyse :
> set global log_bin_trust_function_creators = 1; > start slave;Suivez le journal de démarrage de mysql, l'esclave fonctionne normalement et le problème est résolu. Recommandations associées :
Solution à l'erreur 1418 dans la fonction de création MySQL
Erreur de connexion à la base de données MySQL-php, quelle en est la raison
Erreur de démarrage MySQL après la migration des données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!