【发布时间】:2013-10-27 21:05:38
【问题描述】:
我已经被这个错误困扰了好几天了,我找不到修复它的方法。我已经尝试实现
- 单例数据库对象
- 查询后关闭我的连接
- 尝试持久连接
- 将最大连接数设置为 250(本地)
- 设置最大用户连接数 250(本地)
其他人也遇到过这种情况吗?
奇怪的是我的本地服务器上的错误消息是Connection failed: SQLSTATE[08004] [1040],但行仍然是插入并且数据库查询工作。
在生产服务器上,错误消息变为Connection failed: SQLSTATE[42000] [1203] User db_admin already has more than 'max_user_connections' active connections 我知道最大连接数设置为 15,但我咨询了支持人员,他们说我在出现此错误时没有连接。
在我做出所有选择之后,有人可以检查我的代码以确保其中没有可能导致这些错误的错误吗?
class MyPDO extends PDO{
const DB_HOST='localhost';
const DB_PORT='3306';
const DB_NAME='db_name';
const DB_USER='db_admin';
const DB_PASS='SECRET';
public function __construct(){
parent::__construct('mysql:host='.MyPDO::DB_HOST.';port='.MyPDO::DB_PORT.';dbname='.MyPDO::DB_NAME,
MyPDO::DB_USER,MyPDO::DB_PASS);
try{
$this->db = new MyPDO();
$this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
}catch(PDOException $e){
//always catching the connection errors
echo 'Connection failed: ' . $e->getMessage();
}
}
public function query($query){
$args = func_get_args();
array_shift($args);
//check inputs
var_dump($args);
$reponse = parent::prepare($query);
$reponse->execute($args);
return $reponse;
}
}
这是插入查询
function InsertUserToSql()
{
$ret = $this->db->query("INSERT INTO CD_USERS (email,username,password,fname,lname,dob,gender) VALUES
(?,?,?,?,?,?,?)",$this->Email,$this->Username,$this->Password,$this->Fname,
$this->Lname,$this->Birthday,$this->Gender);
if($ret){
echo "insert success";
return $this->db->lastInsertId();
}
$this->db = null;
}
【问题讨论】: