Jek*_*son 11 mysql django gitlab
我正在尝试使用 CI/CD gitlab 设置 django 项目的自动测试。问题是,我无法以任何方式连接到 Mysql 数据库。
gitlab-ci.yml
services:
- mysql:5.7
variables:
MYSQL_DATABASE: "db_name"
MYSQL_ROOT_PASSWORD: "dbpass"
MYSQL_USER: "username"
MYSQL_PASSWORD: "dbpass"
stages:
- test
test:
stage: test
before_script:
- apt update -qy && apt-get install -qqy --no-install-recommends default-mysql-client
- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DATABASE --host=$MYSQL_HOST --execute="SHOW DATABASES; ALTER USER '$MYSQL_USER'@'%' IDENTIFIED WITH mysql_native_password BY '$MYSQL_PASSWORD'"
script:
- apt update -qy
- apt install python3 python3-pip virtualenvwrapper -qy
- virtualenv --python=python3 venv/
- source venv/bin/activate
- pwd
- pip install -r requirement.txt
- python manage.py test apps
Run Code Online (Sandbox Code Playgroud)
使用此文件配置,我收到错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Run Code Online (Sandbox Code Playgroud)
我尝试过做什么
添加到 mysql脚本 tcp 连接而不是套接字
mysql --protocol=TCP --user=$MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DATABASE --host=$MYSQL_HOST --execute="SHOW DATABASES; ALTER USER '$MYSQL_USER'@'%' IDENTIFIED WITH mysql_native_password BY '$MYSQL_PASSWORD'"
Run Code Online (Sandbox Code Playgroud)
在这种情况下我得到了
ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (99)
Run Code Online (Sandbox Code Playgroud)
我该如何正确设置?
小智 10
您的问题可能有多种原因:
mysql:5.7代替mysql:latestMYSQL_HOSTMySQLvariables服务器的主机名。(应该是mysql使用mysql:5.7in serviceskey 时)variables解决方案:检查您的 部分中的凭据.gitlab-ci.yml并与 Django 的settings.py. 它们应该是相同的。mysql-client并检查是否能够连接。以下是安装 MySQL 客户端并连接到基于 debian 的映像(或映像)script中的数据库的示例:python:latest
script:
- apt-get update && apt-get install -y git curl libmcrypt-dev default-mysql-
- mysql --version
- sleep 20
- echo "SHOW tables;"| mysql -u root -p"$MYSQL_ROOT_PASSWORD" -h "${MYSQL_HOST}" "${MYSQL_DATABASE}"
Run Code Online (Sandbox Code Playgroud)
以下是使用 MySQL 5.7 作为服务和已安装成功连接到 MySQL 数据库的python映像的完整且有效的示例:mysql-client
stages:
- test
variables:
MYSQL_DATABASE: "db_name"
MYSQL_ROOT_PASSWORD: "dbpass"
MYSQL_USER: "username"
MYSQL_PASSWORD: "dbpass"
MYSQL_HOST: mysql
test:
image: python:latest
stage: test
services:
- mysql:5.7
script:
- apt-get update && apt-get install -y git curl libmcrypt-dev default-mysql-client
- mysql --version
- sleep 20
- echo "SHOW tables;" | mysql -u root -p"$MYSQL_ROOT_PASSWORD" -h "${MYSQL_HOST}" "${MYSQL_DATABASE}"
- echo "Database host is '${MYSQL_HOST}'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21449 次 |
| 最近记录: |