클라이언트에서 저장시 users테이블이 생성이 안되어 아래와 같은 오류가 뜸
[ WARNING ] PSQLError(code: server, serverInfo: [sqlState: 42P01, file: parse_relation.c, line: 1395, message: relation "users" does not exist, position: 158, routine: parserOpenTable, localizedSeverity: ERROR, severity: ERROR], triggeredFromRequestInFile: PostgresKit/PostgresDatabase+SQL.swift, line: 53, query: PostgresQuery(sql: SELECT "users"."id" AS "users_id", "users"."username" AS "users_username", "users"."email" AS "users_email", "users"."created_at" AS "users_created_at" FROM "users", binds: [])) [request-id: ADF414FF-1118-48C5-983D-8E3890A09774]
struct CreateUser: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema("users")
.field("id", .int, .identifier(auto: true)) // 자동채번 활성화
.field("username", .string, .required)
.field("email", .string, .required)
.field("created_at", .datetime, .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema("users").delete()
}
}
try await app.autoMigrate().get() 잘함
app.migrations.add(CreateUser())
try await app.autoMigrate().get()
public func configure(_ app: Application) async throws {
// uncomment to serve files from /Public folder
// app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
//연결test시 상위 터미널에서 swift run실해
// PostgreSQL 데이터베이스 연결 구성
app.databases.use(.postgres(
hostname: "호스트명",
port: 5432, username: "postgres",
password: "비밀번호",
database: "initial_db",
tlsConfiguration: .forClient(certificateVerification: .none)
), as: .psql)
// 마이그레이션 추가
app.migrations.add(CreateUser())
// register routes
try routes(app)
//마이그레이션 자동실행
try await app.autoMigrate().get()
// try await app.autoMigrate().get()
}
TEST하려고 users테이블을 강제 drop해줬는데, "_fluent_migrations" users 테이블에 마이그레이션 기록이 남아 있던거였음
select * from "_fluent_migrations"
_fluent_migrations 에서 관련 테이블 기록 삭제