В моем случае я переместил файл сокета в другое место внутри /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.
Но вам придется рекурсивно искать все instance_variables каждого объекта. И , как указывает Кэри , объект может быть назначен более чем одной переменной одновременно.
Причина, по которой я искал это поведение, заключалась в том, чтобы использовать имя переменной, но также в качестве позиции в сетке данных. Таким образом, если бы имелась двумерная сетка, имена переменных были бы похожи на «AA», «AB», «BC» и т. Д. Он знал его имя, он также знал бы его положение.
blockquote>То, что вы описываете, - это антишаблон «действие на расстоянии» , где изменения в одной части программы изменяют другую часть программы без очевидной связи. Это нарушает инкапсуляцию; Хорошая инкапсуляция позволяет вам понять отдельную часть системы, просто взглянув на ее входы и выходы. Нарушение инкапсуляции означает, что для понимания одной части системы вы должны понимать каждую часть системы, что приводит к кошмару обслуживания. Современные языки и практики стремятся как можно больше избегать этого.
Например, имя переменной никогда не должно иметь значения для поведения программы. Вы должны быть в состоянии безопасно выполнить рефакторинг Rename Variable , чтобы назвать переменную в соответствии с тем, что имеет смысл для пользователя объекта. В вашем примере это изменило бы поведение программы, нарушающей принцип наименьшего удивления .
Вместо этого у вас будет объект, представляющий вашу Грид, и это будет управлять отношениями между Узлами в Грид. Вместо того, чтобы обгонять отдельные узлы, вы обойдете сетку.
Или каждый Узел может знать, кто их соседние Узлы. Примером этого может служить традиционная структура Tree , Graph или Linked List . Преимущество здесь в том, что нет фиксированной позиции, и структура данных может расти или уменьшаться в любом направлении. Любой Узел может быть обойден, и он знает свое положение в структуре.