hi all,
I just have another problem related to mysql in database socket.
I need to setup my mariadb database as multiple instances by mysqld_multi. So the socket file is not in standard as /var/run/mysqld/mysqld.sock, it is another file name, eg. /var/run/mysqld/mysqld1.sock. After i setup my database and restart erpnext, i found it has a error in:
File "/home/easystore/frappe-bench/apps/frappe/frappe/database.py", line 106, in sql
self.connect()
File "/home/easystore/frappe-bench/apps/frappe/frappe/database.py", line 52, in connect
use_unicode=True, charset='utf8')
File "/home/easystore/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/home/easystore/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2002, 'Can\'t connect to local MySQL server through socket \'/var/run/mysqld/mysqld.sock\' (2 "No such file or directory")')'
My solution is:
-
adding a item into site_config.json as
“db_unix_socket”: “/var/run/mysqld/mysqld3306.sock”,
-
editing ~/frappe-bench/apps/frappe/frappe/database.py
…
class Database:
…
def init(self, host=None, user=None, password=None, ac_name=None, use_default = 0):
…
self.password = password or frappe.conf.db_password
self.value_cache = {}self.unix_socket = frappe.conf.db_unix_socket or None…
def connect(self):
“”“Connects to a database as set insite_config.json.”“”
warnings.filterwarnings(‘ignore’, category=MySQLdb.Warning)
self._conn = MySQLdb.connect(user=self.user, host=self.host, passwd=self.password,
use_unicode=True, charset=‘utf8’, unix_socket=self.unix_socket)
self._conn.converter[246]=float
… -
start erpnext again, then it works.