我的php类有一个奇怪的问题,我用它来连接mysql数据库。我在localhost上测试过,效果很好,但在上传到服务器后,它表现得像:
这是我班上的连接方法:
public function __construct($server, $user, $pass, $database, $encoding = "utf8") {
self::$counter++;
if($this->connect==null) {
if(self::$counter>1) { $new_link = true; } else { $new_link = false; }
if($this->connect = MySQL_Connect($server, $user, $pass, $new_link)) {
mysql_select_db($database, $this->connect);
$this->execute("SET NAMES '"+$encoding+"'");
$this->server = $server;
$this->user = $user;
$this->password = $pass;
$this->database = $database;
$this->encoding = $encoding;
return true;
}
else {
echo "Error while connecting database!";
}
}
}
这是连接代码:
$SQL_server = "server1";
$SQL_user = "user1";
$SQL_pass = "pass1";
$Database = "database1";
$mysql = new mysql($SQL_server, $SQL_user, $SQL_pass, $Database);
$SQL_server2 = "server2";
$SQL_user2 = "user2";
$SQL_pass2 = "pass2";
$Database2 = "database2";
$mysql2 = new mysql($SQL_server2, $SQL_user2, $SQL_pass2, $Database2);
奇怪的是,我收到的错误是:用户'user2'访问被拒绝@'%'到数据库'database1' 似乎变量混乱了或类似的东西,但我不知道它为什么会发生。当我删除第二个连接的代码时,它可以工作,但不能一起使用。我虽然可能错误地使用我的静态变量计数器(计算连接数)并且可能导致$ new_link属性未设置为true,但即使我将其设置为true而没有任何条件,它仍然不起作用
答案 0 :(得分:-1)
我在两天之前遇到这个问题,我得到了解决方案
其服务器级别问题不是您的代码级别
为此你必须在你的服务器中设置一行
编辑名为my.cnf的文件,它位于我的/etc/my.cnf
中max_connections = 500
完整文件内容
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
max_allowed_packet=100M
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 500
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
long_query_time = 0
slow_query_log = 1
slow_query_log_file=/var/log/mysqld.slow.query.log
SET GLOBAL general_log = 'ON';
log=/var/log/mysqld.general.log
/etc/my.cnf (END)