ホームページ データベース mysql チュートリアル MYSQL作成機能のエラー解決方法

MYSQL作成機能のエラー解決方法

Jan 13, 2018 pm 01:57 PM
mysql エラー どうやって

MySQLデータベースを使用している場合、MySQL関数が作成できない場合があります。ここでは、MySQL 関数が作成できない問題を解決する方法を説明しますので、ご参考までに。皆さんのお役に立てれば幸いです。

ケース 1:

現在、mysql を作成する関数を実行するとエラーが発生します。

Mysql 作成関数のエラー メッセージは次のとおりです:

必要なアクセスが拒否されました。 of) この操作に対する SUPER 権限

まず作成機能が有効かどうかを確認します。 作成機能が有効かどうかを確認する SQL は次のとおりです:

-- 查看是否开启创建函数的功能
show variables like '%func%';
-- 开启创建函数的功能
set global log_bin_trust_function_creators = 1;
ログイン後にコピー

SQL を実行すると、次に、SQL が正しく記述されているかどうかを確認します (SQL は他人のものなので、他の人の環境では問題ありませんが、自分の環境では可能です)。

彼が作成した SQL には指定されたユーザーが含まれていたため、問題が発生したことが突然わかりました。

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 ;
ログイン後にコピー

CREATE_FUNCTION の仕様により、DEFINER パラメーターが原因であることがわかります。データベースユーザーを指定できますが、自分のライブラリはこのユーザーではないため、問題が発生します。

問題は現在解決されました。

-EOF-

ケース 2:

MySQL でユーザー定義関数を作成するときに、次のエラーが報告されました:

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)
ログイン後にコピー

これは、セキュリティ パラメーターがオンになっていないためです。log_bin_trust_function_creators のデフォルト値は 0 です。関数の同期が許可されていない場合は、このパラメータを有効にすると、作成は成功します。

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)
ログイン後にコピー

このパラメーターがマスターで有効になっている場合は、スレーブ側でもこのパラメーターを忘れずに有効にしてください (salve を停止してから再起動する必要があります)。そうしないと、マスターで関数を作成すると、リプラクションが中断されます。

ケース 3:

エラー コード: 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)
ログイン後にコピー

分析:

システム プロンプトによると、このエラーの原因はセキュリティ設定の構成である可能性があります。log_bin_trust_function_creators パラメーターのデフォルトは 0 です。同期は許可されません。通常、レプリカを設定するときにこのパラメーターに注意を払うのを忘れるため、マスターが関数を更新した後、スレーブはエラーを報告し、その後スレーブは停止します。

処理プロセス:

mysqlデータベースにログインします

> set global log_bin_trust_function_creators = 1;
> start slave;
ログイン後にコピー

mysql起動ログを追跡すると、スレーブは正常に実行され、問題は解決されます。

関連する推奨事項:

mysql作成関数の1418エラーの解決策

mysql-phpデータベース接続エラー、その理由は何ですか

データ移行後のMysql起動エラー

以上がMYSQL作成機能のエラー解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

PHPのビッグデータ構造処理スキル

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP 配列ページングのパフォーマンス最適化戦略 PHP 配列ページングのパフォーマンス最適化戦略 May 02, 2024 am 09:27 AM

PHP 配列ページングのパフォーマンス最適化戦略

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

See all articles