Не удается подключиться к моей онлайн-базе данных с PDO и PHP [duplicate]

Мне нужен столбец с несколькими значениями, он может быть реализован как поле xml

. Он может быть преобразован в запятую, если это необходимо

, запрашивающий список XML в sql-сервере, используя Xquery .

Будучи полем xml, некоторые проблемы могут быть устранены.

С CSV: не может гарантировать, что каждое значение является правильный тип данных: нет возможности предотвратить 1,2,3, банан, 5

С XML: значения в теге могут быть принудительно заданы для типа


С CSV: не удается использовать ограничения внешнего ключа для привязки значений к таблице поиска;

С XML: все еще проблема


С CSV: не может обеспечить уникальность: никакой возможности предотвратить 1,2,3,3 , 3,5

С XML: все еще проблема


С CSV: невозможно удалить значение из списка, не извлекая весь список.

С XML: отдельные элементы могут быть удалены


С CSV: трудно найти все объекты с заданным значением в списке; вам нужно использовать неэффективное сканирование таблицы.

С XML: поле xml можно индексировать


С CSV: трудно подсчитать элементы в списке или сделать другой агрегат запросы. **

С XML: не особо сложно


С CSV: трудно присоединить значения к справочной таблице, к которой они ссылаются. **

С XML: не особенно сложно


С CSV: трудно получить список в отсортированном порядке.

С XML: не особо сложно


С CSV: сохранение целых чисел в виде строк занимает в два раза больше места, чем сохранение двоичных целых чисел.

С XML: память еще хуже, чем csv


С CSV: Плюс много запятых.

С использованием XML: теги используются вместо запятых


Короче говоря, использование XML затрагивает некоторые проблемы с ограниченным списком И может быть при необходимости преобразуется в список с разделителями

214
задан user0118999881999119725 3 12 May 2013 в 07:03
поделиться

30 ответов

Вы подключаетесь к «localhost» или «127.0.0.1»? Я заметил, что при подключении к «localhost» используется разъем сокета, но когда вы подключаетесь к «127.0.0.1», используется соединитель TCP / IP. Вы можете попробовать использовать «127.0.0.1», если разъем сокета не включен / работает.

187
ответ дан Jan Thomä 20 August 2018 в 14:13
поделиться
  • 1
    Я все еще получил ошибку сохранения, используя 127.0.0.1 вместо loclahost – alok.kumar 24 January 2014 в 12:31
  • 2
    В этом случае вам, вероятно, следует проверить, действительно ли ваш сервер MYSQL работает. – Jan Thomä 25 January 2014 в 10:48
  • 3
    Вы также можете принудительно использовать сокет с параметром сокета (-S с / usr / bin / mysql) и принудительно использовать TCP / IP, предоставляя порт (-P с / usr / bin / mysql.) – Kaoru 1 June 2014 в 12:17
  • 4
    Для меня работало с использованием полного имени сети, отличного от localhost. Просто убедитесь, что он объявлен в файле hosts. – Fabien Haddadi 11 October 2016 в 11:19
  • 5
    Обратите внимание на пользователей cygwin: если клиент cygwin mysql пытается подключиться к локальному серверу mysql WAMP, используйте -h & lt; hostname, отличное от localhost & gt ;. Не пытайтесь создать файл mysql.sock и объявить его в любом файле my.cnf, это не сработает. – Fabien Haddadi 11 October 2016 в 11:21

Просто дождь в ту же проблему - и вот как я его обратился.

Предполагая, что mysqld запущен, проблема может быть просто клиентом mysql, не зная, где искать файл сокета.

Самый простой способ адресовать это состоит в том, чтобы добавить следующую строку в файл профиля .my.cnf вашего пользователя (в linux, который обычно находится в / home / myusername):

socket=<path to the mysql socket file>

Если у вас там нет файла .my.cnf, создайте его, содержащее следующее:

[mysql]
socket=<path to the mysql socket file>

В моем случае, поскольку я переместил папку данных по умолчанию mysql (/ var / lib / mysql ) в другом месте (/ data / mysql), я добавил к .my.cnf следующее:

[mysql]
socket=/data/mysql/mysql.sock

Надеюсь, это поможет.

-1
ответ дан adriano72 20 August 2018 в 14:13
поделиться

Моя проблема заключалась в том, что я успешно установил mysql и работал нормально.

Но однажды произошла одна и та же ошибка.

Не удается подключиться к локальному серверу MySQL через socket '/var/lib/mysql/mysql.sock' (2)

И не существует файла mysql.sock.

Это решение разрешило мою проблему и mysql снова запущен и запущен:

Войдите в систему с правами root:

sudo su -

Run:

systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service

Проверьте как root:

mysql -u root -p

mysql теперь должен быть запущен.

Надеюсь, это тоже поможет кому-то другому.

1
ответ дан bharald 20 August 2018 в 14:13
поделиться

Это проблема, если у вас заканчивается дисковое пространство. Решение состоит в том, чтобы освободить место на жестком диске.

Пожалуйста, прочитайте больше, чтобы получить объяснение:

Если вы используете MySQL в LINUX, проверьте свободное место на жестком диске с помощью свободного диска команды :

 df 

, если вы получаете что-то вроде этого:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home

Тогда это проблема, и теперь у вас есть решение!

Так как mysql .sock хочет быть созданным в папке mysql, которая почти всегда находится под корневой папкой, не может быть достигнута из-за нехватки места.

Если вы периодически используете команду ls в каталоге mysql (в openSUSE 11.1 находится в / var / lib / mysql), вы получите что-то вроде:

hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore

Файл mysql.sock часто появляется и исчезает (вы должны попробовать выделить с ls, чтобы попасть в экземпляр с помощью mysql .sock файл в папке).

Это вызвано нехваткой дискового пространства.

Надеюсь, что я помогу некоторым людям !!!! Спасибо!

0
ответ дан c.chasapis 20 August 2018 в 14:13
поделиться

Скорее всего, mysql.sock не существует в /var/lib/mysql/.

Если вы найдете тот же файл в другом месте, тогда symlink его:

Например: у меня это есть /data/mysql_datadir/mysql.sock

Переключить пользователя в mysql и выполнить, как указано ниже:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

Это решило мою проблему

17
ответ дан caitriona 20 August 2018 в 14:13
поделиться
  • 1
    переименование mysql.sock на что-то еще, а затем перезапуск mysqld («service mysqld restart»), а затем переименование чего-то еще в mysql.sock для меня. Небольшая вариация в этом ответе, поэтому спасибо. – Fuzzy Analysis 28 June 2014 в 07:35
  • 2
    Этот ответ может помочь найти файл mysql.sock – Nobita 28 July 2016 в 12:30

Если вы находитесь в оболочке sf.net , попробуйте:

mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p

Измените {LETTER} и {GROUP ID}, как показано в вашей базе данных MySQL проекта admin profile.

0
ответ дан Chetabahana 20 August 2018 в 14:13
поделиться

try

echo 0 > /selinux/enforce
3
ответ дан Cobra_Fast 20 August 2018 в 14:13
поделиться

Сервер MySQL не запущен, или это не местоположение его файла сокета (проверьте my.cnf).

19
ответ дан Dan Grossman 20 August 2018 в 14:13
поделиться
  • 1
    У меня была проблема, описанная выше, и это была проблема. Благодарю. – oshirowanen 11 January 2014 в 21:14
  • 2
    Где это будет для Homebrew? – pal4life 8 August 2014 в 16:05

В моем случае я переместил файл сокета в другое место внутри /etc/my.cnf с /var/lib/mysql/mysql.sock до /tmp/mysql.sock

Даже после перезапуска службы mysqld, я все еще вижу сообщение об ошибке, когда я пытаюсь подключения. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Проблема заключается в том, что клиент настроен. Запуск диагностики фактически покажет правильный путь сокета. например ps aux | grep mysqld

Работы:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

Не работает:

mysql -uroot -p
mysql -uroot -p -hlocalhost

Вы можете исправить эту проблему добавив одну и ту же строку сокета в разделе [client] внутри конфигурации mysql.

11
ответ дан Dejan 20 August 2018 в 14:13
поделиться

Убедитесь, что вы запустили сервер:

mysql.server start

Затем подключитесь к пользователю root:

mysql -uroot
4
ответ дан Deniz Ozger 20 August 2018 в 14:13
поделиться

Если вы находитесь в недавнем RHEL, вам может понадобиться запустить mariadb (open source mysql db) вместо mysql db:

yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start

Затем вы должны иметь доступ к mysql в обычный способ:

mysql -u root -p
8
ответ дан duhaime 20 August 2018 в 14:13
поделиться

Обратите внимание, что в то время как mysql считывает информацию о местоположении файла сокета из файла my.cnf, программа mysql_secure_installation, похоже, делает это неправильно.

Итак, если вы похожи на меня и тасуете во время установки вы можете столкнуться с ситуацией, когда вы можете подключиться к базе данных с помощью mysql просто отлично, но вещь не может быть защищена (не используя этот сценарий в любом случае).

Чтобы исправить это предложение sreddy работает хорошо: сделайте softlink, откуда скрипт будет ожидать, что сокет будет там, где он есть на самом деле. Пример:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(я использую / tmp / в качестве местоположения по умолчанию для сокетов)

1
ответ дан Ellert van Koperen 20 August 2018 в 14:13
поделиться

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

eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through 
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $

Итак, вы должны указать хост следующим образом:

eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| mysql                   |
| performance_schema      |
+-------------------------+
3 rows in set (0.00 sec)

mysql> exit
Bye
eric@dev ~ $
1
ответ дан Eric Leschinski 20 August 2018 в 14:13
поделиться

MariaDB, разработанная сообществом разработчиков MySQL, стала стандартной версией MySQL во многих дистрибутивах.

Итак, сначала вы должны начать,

$ sudo systemctl start mariadb

Если это не так, try,

$ sudo systemctl start mysqld

Затем, чтобы запустить mysql,

$ mysql -u root -p

На сегодняшний день в Fedora пакет называется mariadb, а в Ubuntu он называется mariadb-server.

Поэтому вам может потребоваться установить его, если он еще не установлен в вашей системе.

5
ответ дан Gayan Weerakutti 20 August 2018 в 14:13
поделиться

Убедитесь, что в /var осталось достаточно места. Если демон Mysql не может записать дополнительную информацию на диск, сервер mysql не запустится, и это приведет к ошибке Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

. Рассмотрим использование

expire_logs_days = 10
max_binlog_size = 100M

. Это будет поможет вам сократить использование диска.

8
ответ дан Gottlieb Notschnabel 20 August 2018 в 14:13
поделиться
  • 1
    Спасибо, я запускаю mysql в oracle virtualbox, и когда я сделал дамп моего bd, у меня закончилось свободное пространство и не удалось запустить mysql-сервер, когда я удалил файл дампа, я смог перезапустить сервер mysql. – JayCee 29 May 2013 в 17:29
  • 2
    Это решило это для меня. У меня был innodb_buffer_pool_size, который был очень высоким для производственных окружений, и это привело к сбою mysql на моей виртуальной машине. – Benjamin Brizzi 24 April 2014 в 17:43
  • 3
    У меня была эта проблема при использовании phabricator , и решение заключалось в изменении innodb_buffer_pool_size в my.cnf. Установка его на небольшое значение, например innodb_buffer_pool_size = 50M, является хорошим тестом, чтобы отбросить эту гипотезу;) – Yeke 7 January 2015 в 16:26
  • 4
    Привет, Секар, я ввел «find / -name my.cnf», и у меня было два места. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Итак, какой из них использовать .. Я задал вопрос здесь. stackoverflow.com/questions/32437796/… – Nana Partykar 7 September 2015 в 13:38
  • 5
    Это была проблема, связанная с ошибкой, проверили все, кроме дискового пространства. Освобожденное пространство от / var, оно вернулось! – Nadjib Mami 4 September 2017 в 11:23

Сначала введите «service mysqld start» и войдите в систему

2
ответ дан hPrasad 20 August 2018 в 14:13
поделиться
  • 1
    что вы хотите сказать? прочитайте faq , прежде чем задавать вопрос здесь – Freak 7 May 2013 в 04:46
  • 2
    Этот вопрос был успешно удовлетворен три года назад. Этот точный ответ был дан более полно в прошлом году. – Cairnarvon 7 May 2013 в 04:51

столкнулся с этой проблемой при попытке подключиться к mysql в SSH-клиенте, нашел добавление пути сокета к команде, полезной при переключении между сокетами.

> mysql -u user -p --socket=/path/to/mysql5143.sock
0
ответ дан Jaak Kütt 20 August 2018 в 14:13
поделиться

Проверьте, работает ли еще одна служба mysql.

4
ответ дан Kishore Relangi 20 August 2018 в 14:13
поделиться

Убедитесь, что ваша служба mysql запущена

service mysqld start

Затем попробуйте выполнить одно из следующих действий:

(если вы не установили пароль для mysql)

mysql -u root

, если вы уже установили пароль

mysql -u root -p
165
ответ дан Leandros 20 August 2018 в 14:13
поделиться

Если ваш файл my.cnf (обычно в папке etc) правильно настроен с помощью

socket=/var/lib/mysql/mysql.sock

, вы можете проверить, работает ли mysql со следующей командой:

mysqladmin -u root -p status

попробуйте изменить свое разрешение на папку mysql. Если вы работаете локально, вы можете попробовать:

sudo chmod -R 777 /var/lib/mysql/

, которые решили его для меня

24
ответ дан marimaf 20 August 2018 в 14:13
поделиться
  • 1
    Это работает и для меня, но после того, как я обновился до последней версии, вы обнаружите эту проблему, могу ли я знать, почему это происходит? – Ben 30 June 2017 в 09:46

Он работал со мной со следующими изменениями:

Какой бы путь для сокета не упоминался в [mysqld] и тот же в [client] в my.cnf и не перезагружать mysql

[mysqld ] socket = / var / lib / mysql / mysql.sock

[client] socket = / var / lib / mysql / mysql.sock

0
ответ дан minhas23 20 August 2018 в 14:13
поделиться

, если вы меняете файлы в / var / lib / mysql [например, копируете или заменяете это], вы должны установить владельца файлов в mysql, это так важно, если перезапуск mariadb.service был неудачным

chown -R mysql: mysql / var / lib / mysql / *

chmod -R 700 / var / lib / mysql / *

3
ответ дан Mohsen Beiranvand 20 August 2018 в 14:13
поделиться

Мне пришлось отключить explicit_defaults_for_timestamp из my.cnf.

0
ответ дан powtac 20 August 2018 в 14:13
поделиться

Попробуйте сначала 2, 3 решения. Ошибка - это всплывающее окно и amp; Если вы не можете найти /var/lib/mysql/mysql.sock

find /var/ -name mysql.sock

Проверить доступное пространство в / var /

df

Если каталог заполнен, удалите некоторые неиспользуемые файлы / каталоги

rm /var/cache/*

Вероятно, ваша проблема будет отсортирована сейчас.

0
ответ дан Sadee 20 August 2018 в 14:13
поделиться

Если ваш mysql ранее работал и внезапно остановился, просто «перезагрузите» сервер.

Столкнулся с этой проблемой на моем CentOS VPS .->

Постоянно получал

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)

Пробовал все методы, окончательно перезапустив сервер, исправил проблемы ->

shutdown -r now

Надеюсь, это поможет!

2
ответ дан Shashank Agarwal 20 August 2018 в 14:13
поделиться

Это может быть глупое предложение, но на 100% убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если сетевой администратор выбрал (или изменил) хостинг Amazon DB, вам понадобится это имя хоста!

1
ответ дан The One and Only ChemistryBlob 20 August 2018 в 14:13
поделиться
  • 1
    Я использую хостинг-провайдера 1and1 и получил эту ошибку после ssh-ing на хост. Исправление было просто для предоставления имени хоста «mysql -u dbo70123521 -p -host db70313321.db.1and1.com db703133520 & quot; – rob 1 March 2018 в 11:56

Вот что сработало для меня:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
5
ответ дан User 20 August 2018 в 14:13
поделиться

Просто отредактируйте /etc/my.cnf Добавьте следующие строки в my.cnf

[mysqld]

socket=/var/lib/mysql/mysql.sock 

[client]

socket=/var/lib/mysql/mysql.sock

Перезапустите mysql и снова подключитесь

mysql -u user -p база данных паролей -h host;

7
ответ дан Vivek Jain 20 August 2018 в 14:13
поделиться
  • 1
    Единственный правильный ответ. Интересно, почему у него недостаточно голосов. – CentAu 18 June 2015 в 14:53
  • 2
    Только это правильно! – x4snowman 1 April 2018 в 15:59

Убедитесь, что вы правильно установили сервер MySQL, я неоднократно встречал эту ошибку, и я думаю, что это сложно отлаживать из сокета, я имею в виду, что было бы проще переустановить его.

Если вы используете CentOS 7, вот правильный способ его установить:

Прежде всего, добавьте источник сообщества mysql yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

. Затем вы можете установить его на yum install mysql-community-server

Запустите его с помощью systemctl: systemctl start mysqld

2
ответ дан Zernel 20 August 2018 в 14:13
поделиться

Проверьте, работает ли ваша служба mysqld или нет, если она не запущена, запустите службу.

Если ваша проблема не решена, найдите /etc/my.cnf и измените следующим образом: где вы видите строка, начинающаяся с socket. Перед выполнением этого обновления сделайте резервную копию этого файла.

socket=/var/lib/mysql/mysql.sock  

Изменить на

socket=/opt/lampp/var/mysql/mysql.sock -u root
8
ответ дан Gottlieb Notschnabel 20 August 2018 в 14:13
поделиться
  • 1
    Привет, Секар, я ввел «find / -name my.cnf», и у меня было два места. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Итак, какой из них использовать .. Я задал вопрос здесь. stackoverflow.com/questions/32437796/… – Nana Partykar 7 September 2015 в 13:38
Другие вопросы по тегам:

Похожие вопросы: