75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
// Script to fix category column in proposals table
|
||
import mysql from 'mysql2/promise';
|
||
import dotenv from 'dotenv';
|
||
import path from 'path';
|
||
import { fileURLToPath } from 'url';
|
||
|
||
const __filename = fileURLToPath(import.meta.url);
|
||
const __dirname = path.dirname(__filename);
|
||
|
||
// Load environment variables
|
||
const envPath = path.join(__dirname, 'server', '.env');
|
||
dotenv.config({ path: envPath });
|
||
|
||
console.log('🔧 Category Column Fix Script');
|
||
console.log('==============================');
|
||
console.log('Database:', process.env.DB_NAME);
|
||
console.log('Host:', process.env.DB_HOST);
|
||
|
||
async function fixCategoryColumn() {
|
||
let connection;
|
||
try {
|
||
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 || '',
|
||
database: process.env.DB_NAME || 'db_proposalkomite'
|
||
});
|
||
|
||
console.log('\n✅ Connected to database');
|
||
|
||
// Check current column type
|
||
const [columns] = await connection.query(
|
||
`SHOW COLUMNS FROM proposals WHERE Field = 'category'`
|
||
);
|
||
|
||
if (columns.length > 0) {
|
||
console.log('Current category column type:', columns[0].Type);
|
||
|
||
if (columns[0].Type.toLowerCase().includes('enum')) {
|
||
console.log('\n⚠️ Category column is ENUM, converting to VARCHAR(100)...');
|
||
|
||
await connection.query(`
|
||
ALTER TABLE proposals
|
||
MODIFY COLUMN category VARCHAR(100) DEFAULT 'AKADEMIK'
|
||
`);
|
||
|
||
console.log('✅ Category column converted to VARCHAR(100) successfully!');
|
||
} else {
|
||
console.log('✅ Category column is already VARCHAR, no changes needed');
|
||
}
|
||
} else {
|
||
console.log('❌ Category column not found in proposals table');
|
||
}
|
||
|
||
// Verify the change
|
||
const [verifyColumns] = await connection.query(
|
||
`SHOW COLUMNS FROM proposals WHERE Field = 'category'`
|
||
);
|
||
console.log('\nFinal category column type:', verifyColumns[0]?.Type);
|
||
|
||
} catch (error) {
|
||
console.error('❌ Error:', error.message);
|
||
if (error.code === 'ECONNREFUSED') {
|
||
console.error(' Make sure MySQL server is running');
|
||
}
|
||
} finally {
|
||
if (connection) {
|
||
await connection.end();
|
||
}
|
||
}
|
||
}
|
||
|
||
fixCategoryColumn();
|