Linux下XAMPP环境Django连接MySQL迁移报错及成因疑问
Django连接MySQL时的Socket路径问题及成因疑惑
背景与操作流程
我用Django开发已有数周,完成了2个小型项目,近期尝试将Django连接至MySQL数据库,操作步骤如下:
- 创建新项目
- 创建新应用并在
settings.py中注册 - 修改
settings.py中的数据库配置 - 在
models.py中创建简单模型 - 安装
mysqlclient等必要依赖 - 成功执行
python manage.py makemigrations完成首次迁移
遇到的错误
执行python manage.py migrate进行二次迁移时,先后出现两类错误:
- 初始报错:
error 111, can't connect to database - 修改
settings.py(添加SQL模式strict_trans_tables)后,报错变为:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
排查与解决
- 检查发现
/var/run/mysqld/mysqld.sock路径下无对应文件,但my.cnf中配置的socket路径为/opt/lampp/var/mysql/mysql.sock且文件存在,MySQL服务正常运行 - 最终通过在
settings.py中手动指定my.cnf路径解决了问题
疑问
我近期在Linux Mint 20.3环境下做Node.js项目时,也需要手动指定socket路径(代码如下),因此疑惑该问题是否与Linux系统版本或安装方式有关,希望了解成因:
const connection = mysql.createConnection({ host: process.env.DB_HOST, user: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, port: process.env.DB_PORT, // THE PATH TO THE SOCKET FILE: socketPath: process.env.DB_SOCKET_PATH });
内容的提问来源于stack exchange,提问作者Marko Kolaksazov
相关产品推荐
相关产品推荐

