itRef.cn技术参考网站

当前位置: 主页 > PHP >

codeigniter for 新浪SAE数据库读写问题

时间:2013-05-13 14:58来源:未知 作者:wiwi 点击:
问题描述 在SAE上使用是Codeigniter框架,有时会碰到提示 TheMySQLserverisrunningwiththe--read-onlyoptionsoitcannotexecutethisstatement 解决方法 这个是Codeigniter for SAE上的一个Bug,对于读写分离没有正确区分导致的。 在application/database/DB_d
问题描述
在SAE上使用是Codeigniter框架,有时会碰到提示
  1. The MySQL server is running with the --read-only option so it cannot execute this statement 
解决方法
这个是Codeigniter for SAE上的一个Bug,对于读写分离没有正确区分导致的。
在application/database/DB_driver.php文件中,加入属性:
  1. var $conn_is_write = FALSE; 
然后修改simple_query函数:
  1. function simple_query($sql
  2.     if ( ! $this->conn_id || ($this->pconnect == FALSE) && ($this->conn_is_write == $this->is_write_type($sql))) 
  3.     { 
  4.         // SAE 读写分离 判断SQL语句类型 
  5.         $_is_write = $this->is_write_type($sql); 
  6.          
  7.         // ---------------------------------------------------------------- 
  8.          
  9.         // Connect to the database and set the connection ID 
  10.         $this->conn_id = ($this->pconnect == FALSE) ? $this->db_connect($_is_write) : $this->db_pconnect(); 
  11.            $this->conn_is_write = $this->db_connect($_is_write); 
  12.  
  13.         // No connection resource?  Throw an error 
  14.         if ( ! $this->conn_id) 
  15.         { 
  16.             log_message('error''Unable to connect to the database'); 
  17.  
  18.             if ($this->db_debug) 
  19.             { 
  20.                 $this->display_error('db_unable_to_connect'); 
  21.             } 
  22.             return FALSE; 
  23.         } 
  24.  
  25.         // ---------------------------------------------------------------- 
  26.  
  27.         // Select the DB... assuming a database name is specified in the config file 
  28.         if ($this->database != ''
  29.         { 
  30.             if ( ! $this->db_select()) 
  31.             { 
  32.                 log_message('error''Unable to select database: '.$this->database); 
  33.  
  34.                 if ($this->db_debug) 
  35.                 { 
  36.                     $this->display_error('db_unable_to_select'$this->database); 
  37.                 } 
  38.                 return FALSE; 
  39.             } 
  40.             else 
  41.             { 
  42.                 // We've selected the DB. Now we set the character set 
  43.                 if ( ! $this->db_set_charset($this->char_set, $this->dbcollat)) 
  44.                 { 
  45.                     return FALSE; 
  46.                 } 
  47.             } 
  48.         } 
  49.          
  50.     } 
  51.     return $this->_execute($sql); 

(责任编辑:wiwi) 转载请注明 来源于itRef.cn技术参考网站:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容