我们的应用程序与下列要求开发间歇性问题,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