nextjs mysql
时间: 2025-07-13 10:57:10 浏览: 11
在使用 Next.js 连接 MySQL 数据库时,通常需要引入一个用于处理数据库连接的模块。虽然可以使用 `mysql` 包来实现这一功能,但更推荐使用 `mysql2` 包,因为它提供了更好的性能和支持异步/await 的 API。
### 安装依赖
首先,确保已经安装了 `mysql2` 和 `next/server` 相关的依赖:
```bash
npm install mysql2
```
### 创建数据库连接池
为了提高性能和资源管理效率,建议使用连接池来管理数据库连接。创建一个名为 `db.js` 或 `database.js` 的文件,并在其中配置连接池:
```javascript
// lib/db.js
import { createPool } from 'mysql2/promise';
const pool = createPool({
host: 'localhost',
user: 'your_database_user',
password: 'your_database_password',
database: 'your_database_name',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
export default pool;
```
### 在 API 路由中使用连接池
Next.js 提供了 API 路由的功能,可以在这些路由中执行数据库查询。以下是一个示例,展示了如何通过 API 路由查询 MySQL 数据库中的数据:
```javascript
// pages/api/example.js
import { NextResponse } from 'next/server';
import pool from '@/lib/db'; // 假设 db.js 放在 lib 文件夹中
export async function GET() {
try {
const connection = await pool.getConnection();
const [rows] = await connection.query('SELECT * FROM your_table');
connection.release();
return NextResponse.json({ data: rows }, { status: 200 });
} catch (error) {
console.error('Database error:', error);
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
}
}
```
### 查询数据并返回 JSON 格式响应
上述代码中,`GET` 函数会从连接池中获取一个连接,然后执行 SQL 查询,最后释放连接回连接池。如果查询成功,则返回包含查询结果的 JSON 响应;如果发生错误,则返回相应的错误信息[^3]。
### 使用环境变量管理敏感信息
为了安全起见,建议将数据库的敏感信息(如用户名、密码等)存储在 `.env.local` 文件中,并通过 `process.env` 来访问这些变量:
```env
# .env.local
DB_HOST=localhost
DB_USER=your_database_user
DB_PASSWORD=your_database_password
DB_NAME=your_database_name
```
更新 `db.js` 文件以使用这些环境变量:
```javascript
// lib/db.js
import { createPool } from 'mysql2/promise';
const pool = createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
export default pool;
```
通过这种方式,可以有效地保护数据库的敏感信息,并使配置更加灵活。
---
阅读全文
相关推荐















