Два или более подключения к MySQL одновременно выдают ошибку Acces Denied

0

Я получаю эту ошибку Доступ запрещен для пользователя '@' localhost '(используя пароль: НЕТ), когда я открываю второе соединение mysqli в том же скрипте.

У меня есть класс, который имеет 2 свойства (подклассы). Эти оба свойства простираются от класса DataBase (который создает новое соединение mysqli). В тот момент, когда эта подзадача получает экземпляр, я получил ошибку Access denied.

Есть ли способ установить два соединения mysqli, или моя логика ошибочна, и у класса shoulnd't есть 2 подкласса, как это?

Надеюсь, я смогу объяснить. заранее спасибо

Теги:
mysqli
database-connection

2 ответа

1

Нет причин, по которым я могу придумать, чтобы открыть 2 подключения к одному серверу базы данных. Вы должны создать свое соединение и передать его в свои функции в качестве аргумента.

$mysqli = new mysqli('localhost', 'username', 'password', 'database');

class Foo {
      /** @var \mysqli */
      protected $db;

      public function __construct(mysqli $mysqli) {
           $this->db = $mysqli;
      }

      public function bar() {
           $res = $this->db->query('SELECT * FROM table');
           $data = array();
           while($row = $res->fetch_assoc()) $data[] = $row;
           return $data;
      }
}

$class = new Foo($mysqli);
  • 0
    Это может сработать, но мне придется проходить соединение каждый раз, когда я создаю экземпляр класса.
  • 0
    Вы можете создать синглтон, если это так важно
Показать ещё 1 комментарий
0

Проверьте свой max_user_connections my.cfg файле my.cfg.

  • max_user_connections

    Максимальное количество одновременных подключений, разрешенных для любой учетной записи пользователя MySQL. Значение 0 (по умолчанию) означает "без ограничений".

    Эта переменная имеет глобальное значение, которое может быть установлено при запуске или времени запуска сервера. Он также имеет значение сеанса только для чтения, которое указывает эффективное ограничение одновременного подключения, которое применяется к учетной записи, связанной с текущим сеансом. Значение сеанса инициализируется следующим образом:

    Если учетная запись пользователя имеет ненулевой MAX_USER_CONNECTIONS ресурса MAX_USER_CONNECTIONS, значение max_user_connections сеанса устанавливается равным этому пределу.

    В противном случае значение сеанса max_user_connections устанавливается в глобальное значение.

  • 0
    Что если в моем файле my.cfg нет события, в котором определена / записана переменная max_user_connections?
  • 1
    Это не проблема. По умолчанию ноль, что означает отсутствие ограничений.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню