返回
如何在 ASP.NET API 中连接 MySQL 数据库?
mysql
2024-03-07 08:53:29
## 在 ASP.NET API 中连接 MySQL 数据库
对于希望将 ASP.NET API 与 Docker 容器中运行的 MySQL 数据库连接的开发人员来说,这是一个常见且关键的任务。本指南将逐步引导你完成此过程,确保顺利连接。
### 先决条件
- Docker 已安装和配置
- Microsoft SQL Server Management Studio 已安装
- ASP.NET API 解决方案
### 步骤 1:配置数据库容器
Docker Compose
version: '3.4'
services:
database:
container_name: DB
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_DATABASE=db
- MYSQL_USER=user
- MYSQL_PASSWORD=secretpassword
- MYSQL_ALLOW_EMPTY_PASSWORD=1
volumes:
- dbdata:/var/lib/mysql
- ./MySqlScripts/init.sql:/docker-entrypoint-initdb.d/1.sql:ro
restart: on-failure
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
ports:
- 3306:3306
command: --default-authentication-plugin=mysql_native_password
步骤 2:配置 API 容器
Dockerfile
FROM microsoft/aspnetcore-build:2.1
WORKDIR /app
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out
ENV ASPNETCORE_URLS http://*:8080
ENTRYPOINT ["dotnet", "out/API.dll"]
步骤 3:连接 MySQL 数据库
在 ASP.NET API 项目中使用以下代码连接数据库:
using MySql.Data.MySqlClient;
namespace API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly MySqlConnection _connectionString = new MySqlConnection("Server=DB;Database=db;User ID=user;Password=secretpassword");
// ...
}
}
### 故障排除
- 确保 MySQL 容器正在运行并可访问: 运行
docker ps
检查容器状态。 - 检查连接字符串: 确保其包含正确的数据库名称、用户名和密码。
- API 容器与 MySQL 容器网络问题: 检查容器是否在同一网络中。
- 端口映射问题: 确保 API 容器的端口已映射到 MySQL 容器的端口。
### 常见问题解答
- 为什么我无法连接到数据库? 检查连接字符串,确保它正确且包含必要的信息。
- 如何检查容器状态? 使用
docker inspect
命令检查容器的配置和状态。 - API 容器需要哪些环境变量? 需要以下环境变量:
MYSQL_HOST
、MYSQL_PORT
、MYSQL_USER
、MYSQL_PASSWORD
和MYSQL_DATABASE
。 - 如何使用 Docker Compose 运行容器? 运行
docker-compose up
命令。 - API 容器如何访问 MySQL 容器? API 容器通过 docker 网络与其连接。