我們的應用程序與下列要求開發間歇性問題,Google Apps腳本和HTML
前端:HTML和谷歌Apps腳本
後端:谷歌雲SQL,MySQL的VER 5.6.21,引擎= InnoDB
我們使用存儲過程來訪問CLOUD SQL。 此存儲過程將通過Google Apps腳本調用。
實施例的存儲過程和執行通過谷歌應用腳本如下過程...
步驟1:存儲過程將創建一個用戶和用於存儲程序,表格,觸發器給授予訪問權限,視圖
DROP PROCEDURE IF EXISTS SP_TEST;
CREATE PROCEDURE SP_TEST(OUT SUCCESS_MESSAGE TEXT)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SET SUCCESS_MESSAGE=0;
END;
START TRANSACTION;
SET AUTOCOMMIT = 0;
DROP USER TESTUSER;
CREATE USER 'TESTUSER'@'%' IDENTIFIED BY 'TESTUSER';
GRANT EXECUTE ON PROCEDURE PROC_NAME1 TO 'TESTUSER'@'%';
GRANT EXECUTE ON PROCEDURE PROC_NAME2 TO 'TESTUSER'@'%';
SET SUCCESS_MESSAGE=1;
COMMIT;
END;
步驟2:在谷歌使用腳本Apps腳本調用存儲過程/訪問SQL表
try
{
//OPEN CONNECTION
var conn=Jdbc.getCloudSqlConnection("jdbc:google:rdbms://" + DB_INSTANCE + "/" + DB_SCHEMA, DB_USER, DB_PASSWORD);
conn.setAutoCommit(false);
//CALL STORE PROCEDURE
var create_stmt = conn.createStatement();
create_stmt.execute("CALL SP_TEST (@SUCCESS_MESSAGE)」);
create_stmt.close();
//SELECT RESULT RETURNED FROM STORE PROCEDURE
var stmt_rolecrinsrtflag = conn.createStatement()
var flag_rolecrinsrtselect="SELECT @SUCCESS_MESSAGE";
var flag_rolecrinsrtrs=stmt_rolecrinsrtflag.executeQuery(flag_rolecrinsrtselect);
if(flag_rolecrinsrtrs.next())
var flag_rolecrinsrtinsert=flag_rolecrinsrtrs.getString("@SUCCESS_MESSAGE");
flag_rolecrinsrtrs.close();
stmt_rolecrinsrtflag.close();
conn.commit();
//CLOSE CONNECTION
conn.close();
return flag_rolecrinsrtinsert;
}
catch(err)
{
//to do rollback,if any exception..
conn.rollback();
}
我們有200多個sp和98個表格。 所有的存儲過程和所有表將被加載到谷歌雲Sql通過根像用戶只。
通過Google apps腳本調用Store Procedure後,將在用戶表中創建用戶,併爲創建的用戶授予存儲過程的訪問權限。
但是當我們調用任何存儲過程/通過Google Apps腳本訪問sql表時,有時我們會遇到以下問題。最初它運行良好,但最近,只有我們正面臨着這些問題。
錯誤1: 「無效的連接ID」 被關上,下面的事情是 觀察
TESTUSER在mysql.user表中擦去如下
執行權限撤銷的PROC_NAME1,PROC_NAME2。
它已經創建已經自動 下降,如PROC_NAME2一些存儲過程
着能夠與Google Apps腳本的剩餘執行
錯誤2着手:「此連接IS已關閉「
- 我們無法繼續進行剩餘執行..
在腳本方面,如果發生任何問題/異常,我們需要繼續執行,即,我們需要刪除在STORE PROCEDURE執行過程中創建的臨時表。
由於上述問題的發生,我們可以不能夠繼續進行腳本執行。
而且還當我們執行該存儲過程,有時我們越來越像問題
錯誤3:「爲表‘./mysql/procs_priv.MYI’不正確的密鑰文件,試圖修復它」
- 此問題之後,無法執行或運行任何存儲過程/ 訪問Google雲Sql。
請參照下面的鏈接..
具有被上述前發行和發行後給定的樣本存儲過程的結果......
https://docs.google.com/a/ssomens.com/document/d/1N5_-O2UfescCmWe9IorteUZUh7gtgkF9-RwubvF4MhM/edit
請勿SHOUT。謝謝。 – jbutler483 2015-02-24 12:55:09