Files
ai_game/server/sql/init.js

70 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 数据库初始化脚本
* 运行: npm run init-db
*/
const fs = require('fs');
const path = require('path');
const mysql = require('mysql2/promise');
require('dotenv').config();
async function initDatabase() {
console.log('开始初始化数据库...');
// 先连接到MySQL不指定数据库
const connection = await mysql.createConnection({
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
multipleStatements: true
});
try {
// 读取并执行schema.sql
console.log('创建数据库表结构...');
const schemaSQL = fs.readFileSync(
path.join(__dirname, 'schema.sql'),
'utf8'
);
await connection.query(schemaSQL);
console.log('表结构创建成功!');
// 读取并执行种子数据
console.log('导入种子故事数据第1部分...');
const seedSQL1 = fs.readFileSync(
path.join(__dirname, 'seed_stories_part1.sql'),
'utf8'
);
await connection.query(seedSQL1);
console.log('种子数据第1部分导入成功');
console.log('导入种子故事数据第2部分...');
const seedSQL2 = fs.readFileSync(
path.join(__dirname, 'seed_stories_part2.sql'),
'utf8'
);
await connection.query(seedSQL2);
console.log('种子数据第2部分导入成功');
console.log('\n数据库初始化完成');
console.log('共创建10个种子故事包含66个剧情节点和多个结局分支。');
} catch (error) {
console.error('数据库初始化失败:', error.message);
throw error;
} finally {
await connection.end();
}
}
// 运行初始化
initDatabase()
.then(() => {
console.log('\n可以启动服务器了: npm start');
process.exit(0);
})
.catch((err) => {
console.error('初始化过程中出现错误:', err);
process.exit(1);
});