こんにちは、現在MySQLに問題があります!
ここで何が問題になっていますか?私はcPanelユーザーです。はい、これを検索しましたが、明確な答えは見つかりませんでした。これは、同じエラーコードの問題を抱えている他の人よりも具体的であるようです。私が従うことができる詳細な応答を追加してください! P.s共有ホスティングアカウントを使用しています。
DELIMITER $$--
-- Functions
--
CREATE DEFINER = `root`@`localhost` FUNCTION `fnc_calcWalkedDistance` (
`steamid64` BIGINT UNSIGNED
) RETURNS INT( 10 ) UNSIGNEDNO SQL BEGIN DECLARE finished INTEGER DEFAULT 0;
DECLARE distance INTEGER DEFAULT 0;
DECLARE x1, x2, z1, z2 FLOAT;
DECLARE curs CURSOR FOR SELECT x, z
FROM log_positions
WHERE `steamid` = steamid64
ORDER BY `timestamp` DESC ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished =1;
OPEN curs;
FETCH curs INTO x1, z1;
SET x2 = x1;
SET z2 = z1;
calculate : LOOPFETCH curs INTO x1, z1;
IF finished =1 THEN LEAVE calculate;
END IF ;
SET distance = distance + SQRT( POW( x2 - x1, 2 ) + POW( z2 - z1, 2 ) ) ;
-- SET distance = distance + 1;
SET x2 = x1;
SET z2 = z1;
END LOOP calculate;
CLOSE curs;
RETURN distance;
END$$
エラーコードは次のとおりです
MySQL said: Documentation
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
root @ localhost userでトリガーを作成する権限がないことを意味します。
トリガーコマンドから定義者を削除してみてください。
CREATE DEFINER = root
@ localhost
FUNCTION fnc_calcWalkedDistance
「DEFINER = your user name
@ localhost
"およびphpmyadminwillからSQLを実行すると正常に動作します。
これは少し遅れることがありますが、cpanelでsqlファイルをアップロードする場合は、sqlファイルのrootをcpanelユーザー名に置き換えてみてください。
上記の場合、次のように書くことができます
CREATE DEFINER = control_panel_username
@ localhost
FUNCTION fnc_calcWalkedDistance
その後、ファイルをアップロードします。それが役に立てば幸い