Codeignitor: Localhost соединяется, но база данных не соединяется с Wamp - PullRequest
0 голосов
/ 20 февраля 2019

Пока я начал работу сегодня, используя wamp-сервер на localhost, все работало как положено.Тогда я случайно нажал на значок wamp и, возможно, щелкнул по какой-то настройке конфигурации.Произошло немного быстро, поэтому не помню, что именно произошло (просто случайное нажатие кнопки) Но я думаю, что я был в этом меню, когда кнопка была нажата. Меню, в котором была нажата кнопка

После этого сервер Wamp перезапустился, и с тех пор я не могу подключиться к базе данных, используя мои проекты CodeIgniter.Когда я пытаюсь открыть проект, он выдает эту ошибку Ошибка, которую он выдает, когда я открываю проект

Когда я пытался отладить свой код, чтобы проверить проблему в одном из файлов моего проекта CodeIgniter(в файле config / database.php).Я поместил этот код, чтобы узнать, в чем проблема.

<code>    echo '<pre>';
  print_r($db['default']);
  echo '
';echo 'Подключение к базе данных:'. $ db ['default'] ['database'];$ dbh = mysql_connect ($ db ['default'] ['hostname'], $ db ['default'] ['username'], $ db ['default'] ['password']) или die ('Не удается подключитьсяв базу данных, потому что: '. mysql_error ());mysql_select_db ($ db ['default'] ['database']);эхоПодключено ОК: ';die ('file:' .__ FILE__. 'Line:' .__ LINE__);

После этого показывает, почему база данных не может быть подключена.Вот что он показывает сейчас.

Реальная проблема

Я искал возможные решения, но не могу их найти.Может кто-нибудь помочь мне в этом?Это ново для меня.

Огромное спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Проверьте следующие шаги, это будет полезно:

Когда вы используете просто "localhost", клиентская библиотека MySQL пытается использовать сокет домена Unix для соединения вместо соединения TCP / IP.Ошибка говорит вам, что сокет, называемый MySQL, не может использоваться для установления соединения, возможно, потому что он не существует (ошибка номер 2).

Из документации MySQL:

Вкл.Unix, программы MySQL обрабатывают имя хоста localhost особым образом, что, вероятно, отличается от того, что вы ожидаете по сравнению с другими сетевыми программами.Для подключений к localhost программы MySQL пытаются подключиться к локальному серверу с помощью файла сокета Unix.Это происходит, даже если указана опция --port или -P для указания номера порта.Чтобы убедиться, что клиент устанавливает соединение TCP / IP с локальным сервером, используйте --host или -h, чтобы указать значение имени хоста 127.0.0.1, или IP-адрес или имя локального сервера.Вы также можете указать протокол соединения явно, даже для localhost, используя опцию --protocol = TCP.

Существует несколько способов решения этой проблемы.

Вы можете просто использовать TCP/ IP вместо сокета Unix.

Вы можете сделать это, используя 127.0.0.1 вместо localhost при подключении.

Однако сокет Unix может быть быстрее и безопаснее в использовании.Вы можете изменить сокет в php.ini: откройте файл конфигурации MySQL my.cnf, чтобы найти, где MySQL создает сокет, и установите PHP mysqli.default_socket в этот путь.В моей системе это /var/run/mysqld/mysqld.sock.

Сконфигурируйте сокет прямо в скрипте PHP при открытии соединения.Например:

$ db = new MySQLi ('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock')

0 голосов
/ 20 февраля 2019

Вы пытались подключиться к вашей БД через phpMyAdmin?Это работает?

Трудно сказать, что вы там сделали, но чтобы сэкономить время, я предлагаю вам просто:

Подключиться через phpMyAdmin, экспортировать вашу базу данных, переустановить WAMP и вернуть вашу БД.

...