2026-05-23 14:15:45 +08:00
|
|
|
const mysql = require('mysql2/promise')
|
2026-05-26 09:18:48 +08:00
|
|
|
require('dotenv').config()
|
2026-05-23 14:15:45 +08:00
|
|
|
|
|
|
|
|
const config = {
|
2026-05-26 09:18:48 +08:00
|
|
|
host: process.env.DB_HOST || '110.42.255.239',
|
|
|
|
|
port: parseInt(process.env.DB_PORT || '3306'),
|
|
|
|
|
user: process.env.DB_USER || 'admin',
|
|
|
|
|
password: process.env.DB_PASSWORD || 'Admin@123',
|
|
|
|
|
database: process.env.DB_NAME || 'miniprogram',
|
2026-05-23 14:15:45 +08:00
|
|
|
waitForConnections: true,
|
|
|
|
|
connectionLimit: 10,
|
|
|
|
|
queueLimit: 0
|
|
|
|
|
}
|
2026-05-26 09:18:48 +08:00
|
|
|
/*
|
|
|
|
|
# 登录服务器,找到 Koa 进程
|
|
|
|
|
ssh ubuntu@110.42.255.239
|
|
|
|
|
pm2 restart weixin
|
|
|
|
|
*/
|
2026-05-23 14:15:45 +08:00
|
|
|
const pool = mysql.createPool(config)
|
|
|
|
|
|
|
|
|
|
async function query(sql, params = []) {
|
|
|
|
|
const connection = await pool.getConnection()
|
|
|
|
|
try {
|
|
|
|
|
const [rows, fields] = await connection.execute(sql, params)
|
|
|
|
|
return rows
|
|
|
|
|
} finally {
|
|
|
|
|
connection.release()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function initDatabase() {
|
|
|
|
|
try {
|
|
|
|
|
const connection = await mysql.createConnection({
|
|
|
|
|
host: config.host,
|
|
|
|
|
port: config.port,
|
|
|
|
|
user: config.user,
|
|
|
|
|
password: config.password,
|
|
|
|
|
multipleStatements: true
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await connection.query(`CREATE DATABASE IF NOT EXISTS ${config.database} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`)
|
|
|
|
|
await connection.query(`USE ${config.database}`)
|
|
|
|
|
|
|
|
|
|
const fs = require('fs')
|
|
|
|
|
const path = require('path')
|
|
|
|
|
const schema = fs.readFileSync(path.join(__dirname, 'schema.sql'), 'utf8')
|
|
|
|
|
const statements = schema.split(';').filter(s => s.trim())
|
|
|
|
|
|
|
|
|
|
for (const statement of statements) {
|
|
|
|
|
await connection.query(statement)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await connection.end()
|
|
|
|
|
console.log('Database initialized successfully')
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('Failed to initialize database:', error)
|
|
|
|
|
throw error
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
pool,
|
|
|
|
|
query,
|
|
|
|
|
initDatabase,
|
|
|
|
|
config
|
|
|
|
|
}
|