fix: correct ComputerNmae typo to ComputerName in BIPUsers DAO

- Fix column name typo in BIP_USERS_CONFIG constant
- Update SQL queries to use correct ComputerName column
- Add migration scripts for database schema fix (JS and SQL)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-03-05 20:35:33 +08:00
parent 7db7f513be
commit 3d2127b660
3 changed files with 160 additions and 5 deletions

View File

@@ -0,0 +1,142 @@
/**
* Fix ComputerNmae Typo in dbo_BIPUsers Table
*
* This script renames the column from 'ComputerNmae' to 'ComputerName'
*/
const mysql = require('mysql2/promise')
async function main() {
const config = {
host: '192.168.31.83',
port: 3306,
user: 'remote_user',
password: '3.1415926Beeke',
database: 'BLD_DB'
}
let connection
try {
console.log('Connecting to MySQL...')
connection = await mysql.createConnection(config)
console.log('Connected successfully!\n')
// Step 1: Check current column name
console.log('=== Step 1: Check current column name ===')
const [columns] = await connection.execute(`
SELECT
COLUMN_NAME,
COLUMN_TYPE,
IS_NULLABLE,
CHARACTER_MAXIMUM_LENGTH,
COLUMN_KEY,
COLUMN_DEFAULT,
EXTRA
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'dbo_BIPUsers'
AND TABLE_SCHEMA = DATABASE()
AND (COLUMN_NAME = 'ComputerNmae' OR COLUMN_NAME = 'ComputerName')
ORDER BY
ORDINAL_POSITION
`)
if (columns.length === 0) {
console.log('No ComputerNmae or ComputerName column found!')
return
}
console.table(columns)
const currentColumn = columns.find((col) => col.COLUMN_NAME === 'ComputerNmae')
const newColumn = columns.find((col) => col.COLUMN_NAME === 'ComputerName')
if (newColumn) {
console.log('\n=== Column is already named "ComputerName"! No modification needed. ===')
return
}
if (!currentColumn) {
console.log('\n=== ERROR: ComputerNmae column not found! ===')
return
}
// Step 2: Count records before modification
console.log('\n=== Step 2: Record count before modification ===')
const [countBefore] = await connection.execute('SELECT COUNT(*) AS total FROM dbo_BIPUsers')
console.log(`Total records: ${countBefore[0].total}`)
// Step 3: Show sample data with the column
console.log('\n=== Step 3: Sample data (showing ComputerNmae column) ===')
const [sample] = await connection.execute(`
SELECT ID, UserName, UserType, ComputerNmae, CreateTime
FROM dbo_BIPUsers
LIMIT 5
`)
console.table(sample)
// Step 4: Rename the column
console.log('\n=== Step 4: Renaming column ComputerNmae -> ComputerName ===')
await connection.execute(`
ALTER TABLE dbo_BIPUsers
CHANGE COLUMN ComputerNmae ComputerName VARCHAR(255) NULL
`)
console.log('Column renamed successfully!\n')
// Step 5: Verify the change
console.log('=== Step 5: Verify modification ===')
const [columnsAfter] = await connection.execute(`
SELECT
COLUMN_NAME,
COLUMN_TYPE,
IS_NULLABLE,
CHARACTER_MAXIMUM_LENGTH,
COLUMN_KEY,
COLUMN_DEFAULT,
EXTRA
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'dbo_BIPUsers'
AND TABLE_SCHEMA = DATABASE()
AND COLUMN_NAME = 'ComputerName'
`)
console.table(columnsAfter)
// Step 6: Verify data is still intact
console.log('\n=== Step 6: Verify data integrity ===')
const [countAfter] = await connection.execute('SELECT COUNT(*) AS total FROM dbo_BIPUsers')
console.log(`Total records after modification: ${countAfter[0].total}`)
// Step 7: Show sample data with new column name
console.log('\n=== Step 7: Sample data (showing ComputerName column) ===')
const [sampleAfter] = await connection.execute(`
SELECT ID, UserName, UserType, ComputerName, CreateTime
FROM dbo_BIPUsers
LIMIT 5
`)
console.table(sampleAfter)
if (countBefore[0].total === countAfter[0].total) {
console.log(
'\n✅ SUCCESS: All data preserved, column renamed from ComputerNmae to ComputerName!'
)
} else {
console.log('\n⚠ WARNING: Record count changed! Please check data.')
}
} catch (error) {
console.error('\n❌ Error:', error.message)
if (error.code) {
console.error('Error code:', error.code)
}
} finally {
if (connection) {
await connection.end()
console.log('\nConnection closed.')
}
}
}
main()

View File

@@ -0,0 +1,13 @@
-- Migration script to fix ComputerNmae typo in dbo_BIPUsers table
-- Changes column name from 'ComputerNmae' to 'ComputerName'
-- Date: 2026-03-05
-- Rename the column (MySQL syntax)
ALTER TABLE dbo_BIPUsers
CHANGE COLUMN ComputerNmae ComputerName VARCHAR(255) NULL;
-- Verify the change
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'dbo_BIPUsers'
AND COLUMN_NAME = 'ComputerName';

View File

@@ -27,7 +27,7 @@ export const BIP_USERS_CONFIG = {
USERNAME: 'UserName', USERNAME: 'UserName',
USER_TYPE: 'UserType', USER_TYPE: 'UserType',
PASSWORD: 'Password', PASSWORD: 'Password',
COMPUTER_NAME: 'ComputerNmae', // Note: typo in database schema COMPUTER_NAME: 'ComputerName',
CREATE_TIME: 'CreateTime' CREATE_TIME: 'CreateTime'
} }
} as const } as const
@@ -173,7 +173,7 @@ export class BIPUsersDAO {
const sqlString = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE ComputerNmae = @computerName WHERE ComputerName = @computerName
` `
const result = await (dbService as SqlServerService).queryWithParams(sqlString, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
@@ -193,7 +193,7 @@ export class BIPUsersDAO {
const sqlString = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE ComputerNmae = ? WHERE ComputerName = ?
` `
const result = await (dbService as MySqlService).query(sqlString, [computerName]) const result = await (dbService as MySqlService).query(sqlString, [computerName])
@@ -277,7 +277,7 @@ export class BIPUsersDAO {
if (computerName) { if (computerName) {
sqlString = ` sqlString = `
INSERT INTO ${tableName} INSERT INTO ${tableName}
(UserName, Password, UserType, ComputerNmae) (UserName, Password, UserType, ComputerName)
VALUES (@username, @password, @userType, @computerName) VALUES (@username, @password, @userType, @computerName)
` `
params = { params = {
@@ -308,7 +308,7 @@ export class BIPUsersDAO {
if (computerName) { if (computerName) {
sqlString = ` sqlString = `
INSERT INTO ${tableName} INSERT INTO ${tableName}
(UserName, Password, UserType, ComputerNmae) (UserName, Password, UserType, ComputerName)
VALUES (?, ?, ?, ?) VALUES (?, ?, ?, ?)
` `
params = [username, password, userType, computerName] params = [username, password, userType, computerName]