103 lines
2.5 KiB
JavaScript
103 lines
2.5 KiB
JavaScript
const mysql = require('mysql2');
|
||
|
||
// 数据库配置
|
||
const configs = [
|
||
{
|
||
name: '测试环境',
|
||
host: '192.168.0.240',
|
||
port: 3306,
|
||
user: 'root',
|
||
password: 'aiot$Aiot123'
|
||
},
|
||
{
|
||
name: '生产环境',
|
||
host: '129.211.213.226',
|
||
port: 9527,
|
||
user: 'root',
|
||
password: 'aiotAiot123!'
|
||
}
|
||
];
|
||
|
||
// 简单的SQL语句(避免编码问题)
|
||
const sqlStatements = [
|
||
"CREATE DATABASE IF NOT EXISTS jiebandata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",
|
||
"USE jiebandata",
|
||
`CREATE TABLE IF NOT EXISTS users (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
openid VARCHAR(64) UNIQUE NOT NULL,
|
||
nickname VARCHAR(50) NOT NULL,
|
||
avatar VARCHAR(255),
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||
) ENGINE=InnoDB`
|
||
];
|
||
|
||
function executeSQL(connection, sql, description) {
|
||
return new Promise((resolve, reject) => {
|
||
console.log(description);
|
||
connection.query(sql, (err, results) => {
|
||
if (err) {
|
||
console.error('失败:', err.message);
|
||
reject(err);
|
||
} else {
|
||
console.log('成功');
|
||
resolve(results);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
async function setupDatabase(config) {
|
||
console.log(`\n开始设置 ${config.name} 数据库...`);
|
||
|
||
const connection = mysql.createConnection({
|
||
host: config.host,
|
||
port: config.port,
|
||
user: config.user,
|
||
password: config.password
|
||
});
|
||
|
||
try {
|
||
await new Promise((resolve, reject) => {
|
||
connection.connect((err) => {
|
||
if (err) reject(err);
|
||
else resolve();
|
||
});
|
||
});
|
||
|
||
for (let i = 0; i < sqlStatements.length; i++) {
|
||
await executeSQL(connection, sqlStatements[i], `执行SQL ${i + 1}/${sqlStatements.length}`);
|
||
}
|
||
|
||
console.log('✅ 数据库设置完成');
|
||
return true;
|
||
|
||
} catch (error) {
|
||
console.error('❌ 数据库设置失败:', error.message);
|
||
return false;
|
||
} finally {
|
||
connection.end();
|
||
}
|
||
}
|
||
|
||
async function main() {
|
||
console.log('🎯 结伴客数据库初始化');
|
||
console.log('='.repeat(50));
|
||
|
||
let successCount = 0;
|
||
|
||
for (const config of configs) {
|
||
const success = await setupDatabase(config);
|
||
if (success) successCount++;
|
||
console.log('\n' + '='.repeat(50));
|
||
}
|
||
|
||
console.log(`📊 完成: ${successCount}/${configs.length} 个环境成功`);
|
||
|
||
if (successCount > 0) {
|
||
console.log('\n🎉 数据库初始化完成!');
|
||
console.log('现在可以运行测试脚本来验证数据库结构。');
|
||
}
|
||
}
|
||
|
||
main().catch(console.error); |