Files
aiapply/update-user-table.js

75 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-09-06 08:28:47 +08:00
const mysql = require('mysql2/promise');
// 数据库连接配置
const dbConfig = {
host: 'gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com',
port: 24936,
user: 'root',
password: '!Rjb12191',
database: 'pronode_db',
charset: 'utf8mb4'
};
async function updateUserTable() {
let connection;
try {
console.log('🔌 正在连接腾讯云数据库...');
// 创建连接
connection = await mysql.createConnection(dbConfig);
console.log('✅ 数据库连接成功!');
// 使用数据库
await connection.query('USE pronode_db');
console.log('✅ 已切换到 pronode_db 数据库');
// 检查密码字段是否存在
console.log('🔍 检查用户表结构...');
const [columns] = await connection.query('DESCRIBE promptforge_users');
const hasPasswordColumn = columns.some(col => col.Field === 'password');
if (!hasPasswordColumn) {
console.log('📝 添加密码字段...');
await connection.query(`
ALTER TABLE promptforge_users
ADD COLUMN password VARCHAR(255) AFTER email
`);
console.log('✅ 密码字段添加成功');
} else {
console.log('✅ 密码字段已存在');
}
// 验证表结构
console.log('🔍 验证更新后的表结构...');
const [updatedColumns] = await connection.query('DESCRIBE promptforge_users');
console.log('📋 用户表字段:');
updatedColumns.forEach(col => {
console.log(` - ${col.Field}: ${col.Type} ${col.Null === 'YES' ? '(可空)' : '(必填)'}`);
});
console.log('🎉 用户表更新完成!');
return true;
} catch (error) {
console.error('❌ 数据库操作失败:', error.message);
return false;
} finally {
if (connection) {
await connection.end();
console.log('🔌 数据库连接已关闭');
}
}
}
// 运行更新脚本
updateUserTable().then(success => {
if (success) {
console.log('🎉 用户表结构更新完成!');
} else {
console.log('💥 用户表结构更新失败!');
}
process.exit(success ? 0 : 1);
});