用php类连接到两个mysql数据库

时间:2011-07-15 08:31:55

标签: php mysql

我的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而没有任何条件,它仍然不起作用

1 个答案:

答案 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)