SAE下的一个问题反馈

#1 jaykon

在新浪的SAE

执行
spClass("mHand")->findSql("UPDATE hand set hand1=hand1+hand0,hand0=0 WHERE hand0>0");
失败,错误是:
UPDATE hand set hand1=hand1+hand0,hand0=0 WHERE hand0>0
执行错误: The MySQL server is running with the --read-only option so it cannot execute this statement
然后我在SAE 的mySqlAdmin直接执行这句SQL,成功,没问题。

接着我用了他自带的方法,执行这句SQL:
$mysql = new SaeMysql();
$sql = "UPDATE hand set hand1=hand1+hand0,hand0=0 WHERE hand0>0";
$mysql->runSql( $sql );
if( $mysql->errno() != 0 )
{
    die( "Error:" . $mysql->errmsg() );
}
$mysql->closeDb();
也完全正常。


我再试着简单地执行一下SQL,依然是那个错误。
spClass("mHand")->findSql("UPDATE hand set hand0=0 WHERE hand0>0");
望jake解答下。


我的版本是3.1.89.2 SAE版,应该是最新版本。


2012-10-11 22:00:04

#2 jake

请先看手册,http://www.speedphp.com/thread-3781-1-1.html

findSql是针对查询,也就是select的,也就是“读”

而update需要使用runSql,runSql还支持insert,delete等操作,也就是“写”

SAE会自动判断读写两者而做出读写分离,上面你的错误在于,把findSql当作了写,在只读的服务器上面是写不进去的,所以就会提示错误!

2012-10-12 08:42:19

#3 jaykon

jake 发表于 2012-10-12 08:42
请先看手册,http://www.speedphp.com/thread-3781-1-1.html

findSql是针对查询,也就是select的,也就是 ...
oh,my fault!
我范2了....谢谢jake!

2012-10-12 09:44:45