From 49949bda62bb4d4d69855c27df3dca071247f434 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Tue, 17 Mar 2026 08:09:04 +0900 Subject: [PATCH] =?UTF-8?q?fix(tkfb):=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20FK=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EB=B6=88=EC=9D=BC=EC=B9=98=20=EC=88=98=EC=A0=95=20(signed/unsi?= =?UTF-8?q?gned)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit projects, sso_users 테이블은 signed int이므로 해당 FK에서 .unsigned() 제거 Co-Authored-By: Claude Opus 4.6 --- ...60317100000_create_schedule_meeting_system.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/system1-factory/api/db/migrations/20260317100000_create_schedule_meeting_system.js b/system1-factory/api/db/migrations/20260317100000_create_schedule_meeting_system.js index f5cde46..c94afc4 100644 --- a/system1-factory/api/db/migrations/20260317100000_create_schedule_meeting_system.js +++ b/system1-factory/api/db/migrations/20260317100000_create_schedule_meeting_system.js @@ -30,7 +30,7 @@ exports.up = async (knex) => { // 3. 공정표 항목 await knex.schema.createTable('schedule_entries', (table) => { table.increments('entry_id').primary(); - table.integer('project_id').unsigned().notNullable() + table.integer('project_id').notNullable() .references('project_id').inTable('projects'); table.integer('phase_id').unsigned().notNullable() .references('phase_id').inTable('schedule_phases'); @@ -42,7 +42,7 @@ exports.up = async (knex) => { table.string('assignee', 100).nullable(); table.text('notes').nullable(); table.integer('display_order').defaultTo(0); - table.integer('created_by').unsigned().nullable() + table.integer('created_by').nullable() .references('user_id').inTable('sso_users'); table.timestamp('created_at').defaultTo(knex.fn.now()); table.timestamp('updated_at').defaultTo(knex.fn.now()); @@ -61,7 +61,7 @@ exports.up = async (knex) => { // 5. 마일스톤 await knex.schema.createTable('schedule_milestones', (table) => { table.increments('milestone_id').primary(); - table.integer('project_id').unsigned().notNullable() + table.integer('project_id').notNullable() .references('project_id').inTable('projects'); table.integer('entry_id').unsigned().nullable() .references('entry_id').inTable('schedule_entries').onDelete('SET NULL'); @@ -70,7 +70,7 @@ exports.up = async (knex) => { table.string('milestone_type', 30).defaultTo('deadline'); table.string('status', 20).defaultTo('upcoming'); table.text('notes').nullable(); - table.integer('created_by').unsigned().nullable() + table.integer('created_by').nullable() .references('user_id').inTable('sso_users'); table.timestamp('created_at').defaultTo(knex.fn.now()); table.timestamp('updated_at').defaultTo(knex.fn.now()); @@ -85,7 +85,7 @@ exports.up = async (knex) => { table.string('location', 200).nullable(); table.text('summary').nullable(); table.string('status', 20).defaultTo('draft'); - table.integer('created_by').unsigned().nullable() + table.integer('created_by').nullable() .references('user_id').inTable('sso_users'); table.timestamp('created_at').defaultTo(knex.fn.now()); table.timestamp('updated_at').defaultTo(knex.fn.now()); @@ -96,7 +96,7 @@ exports.up = async (knex) => { table.increments('id').primary(); table.integer('meeting_id').unsigned().notNullable() .references('meeting_id').inTable('meeting_minutes').onDelete('CASCADE'); - table.integer('user_id').unsigned().notNullable() + table.integer('user_id').notNullable() .references('user_id').inTable('sso_users'); table.unique(['meeting_id', 'user_id']); }); @@ -106,7 +106,7 @@ exports.up = async (knex) => { table.increments('item_id').primary(); table.integer('meeting_id').unsigned().notNullable() .references('meeting_id').inTable('meeting_minutes').onDelete('CASCADE'); - table.integer('project_id').unsigned().nullable() + table.integer('project_id').nullable() .references('project_id').inTable('projects'); table.integer('milestone_id').unsigned().nullable() .references('milestone_id').inTable('schedule_milestones').onDelete('SET NULL'); @@ -114,7 +114,7 @@ exports.up = async (knex) => { table.text('content').notNullable(); table.text('decision').nullable(); table.text('action_required').nullable(); - table.integer('responsible_user_id').unsigned().nullable() + table.integer('responsible_user_id').nullable() .references('user_id').inTable('sso_users'); table.date('due_date').nullable(); table.string('status', 20).defaultTo('open');