2016-08-31 12 views
0

Google CloudSQL 2世代インスタンスの場合、フェイルオーバーレプリケーションを有効にしました。その後、データベースをインポートしようとすると、プロシージャを作成できません。以下のエラーを受け取ります。Google CloudSQL 2世代create関数が機能しない

エラーコード:あなたはSUPER権限とバイナリ ログが有効になっていない1419(あなたは変数少ない安全な log_bin_trust_function_creatorsを使用する場合があります)

が、それは本当CloudSQLということですフェールオーバーでは機能をサポートしませんか?ストアドプロシージャではありません

サンプル実行クエリ

DELIMITER ;; 
CREATE FUNCTION `stutzen`(amount INT) RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
    DECLARE charges FLOAT DEFAULT 1.0; 
    SELECT valuesettings INTO charges FROM dreamer_tbl WHERE namesettings='stutzen.co'; 
    RETURN FLOOR((amount/100) * charges) ; 
END ;; 
DELIMITER ; 

答えて

1

は、それがユーザー定義関数です。 このUDFをストアドプロシージャとして書き直す必要があります。これは動作します。

+0

okありがとうございます。 – arvindwill

+0

Google Cloud SQLはユーザー定義関数をサポートしていませんか? – arvindwill

1

Google Cloud SQLは、ストアドプロシージャと関数の両方をサポートしています。

あなたの場合、SUPER特権を必要とする何らかのルーチンを持っているSQLファイルをインポートしようとしているようですが、これは許可されていません。

+1

あなたはその情報をどこで見つけましたか?私の知る限り、ユーザ定義関数はサポートされていません。https://cloud.google.com/sql/docs/features#differences –

+0

こんにちは@MarkVincze、そうです、クラウドSQLはストアドプロシージャとファンクションをサポートしていますがユーザー定義関数をサポートしていません。 私が言いたいことは、Arvindwill関数を関数として書くことができるということです(したがって、格納されたものとして書く必要はありません)。 訂正していただきありがとうございます。回答を編集します。 ;) – Jordi

0

SET GLOBAL log_bin_trust_function_creatorsを使用しようとしました。これはSUPER権限を持たない関数の作成を許可するが、その変数の設定もCloud SQLでは許可されていないはずです。それを設定するにはSUPER特権が必要です。

関連する問題