๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

dev/C#

[ASP.NET Core + PostgreSQL] ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—…๋ฐ์ดํŠธ ์ค‘ 'timestamp with time zone' literal cannot be generated for Unspecified DateTime ์—๋Ÿฌ ๋ฐœ์ƒ

๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

๐Ÿ“Œ ๋ฌธ์ œ ๋‚ด์šฉ

 

DB ์ƒ์„ฑ > ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ถ”๊ฐ€ > dotnet ef database update๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—…๋ฐ์ดํŠธ

์ด ๊ณผ์ • ์ดํ›„์— ์•„๋ž˜ ์—๋Ÿฌ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ–ˆ๋‹ค.

DateTime ํƒ€์ž…์„ ์ €์žฅํ•  ๋•Œ ๋ช…ํ™•ํ•œ ์‹œ๊ฐ„๋Œ€ ์ •๋ณด(UTC ๋“ฑ)๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค.

 

'timestamp with time zone' literal cannot be generated for Unspecified DateTime: a UTC DateTime is required

 

 

๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ ค ํ–ˆ์ง€๋งŒ ์ด ๊ธ€ ํ•˜๋‚˜๋ฐ–์— ์ฐพ์ง€ ๋ชป ํ–ˆ๊ณ  ๋‚˜์—๊ฒ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ๋˜์ง€ ์•Š์•˜๋‹ค.

npgsql ef core migration to 6.0: 'timestamp with time zone' literal cannot be generated for Unspecified DateTime · Issue #2479 · npgsql/efcore.pg

 

npgsql ef core migration to 6.0: 'timestamp with time zone' literal cannot be generated for Unspecified DateTime · Issue #2479

Hello. I am migrating my project from core 3.1 to core 6.0 and I have troubles with npgsql migration. On my old version I've stored dates using the DateTime clr type and the timestamp without time ...

github.com

 

 

์ฒ˜์Œ์— HasData()๋ฅผ ์‚ฌ์šฉํ•ด seed ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜น์‹œ new DateTime() ๋•Œ๋ฌธ์ธ๊ฐ€ ์‹ถ์–ด ์•„์˜ˆ ์ด ๋ถ€๋ถ„์„ ์‚ญ์ œํ•ด๋ณด์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

modelBuilder.Entity<User>().HasData(
    new User
    {
        Id = 1,
        CreatedAt = new DateTime(2025, 2, 24, 0, 0, 0, DateTimeKind.Utc), // UTC ๋ช…์‹œ
        UpdatedAt = new DateTime(2025, 2, 24, 0, 0, 0, DateTimeKind.Utc)  // UTC ๋ช…์‹œ
    }
);

 

 


๐Ÿ“Œ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

 

1๏ธโƒฃ DateTime์„ UTC๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ €์žฅ

public class User
{
	public int Id { get; set; }
	public DateTime CreatedAt { get; set; } = DateTime.UtcNow;  // UTC๋กœ ์ €์žฅ
	public DateTime? UpdatedAt { get; set; } = DateTime.UtcNow; // UTC๋กœ ์ €์žฅ
}

 

 

2๏ธโƒฃ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒŒ์ผ ๋‹ค์‹œ ์ƒ์„ฑํ•ด๋ณด๊ธฐ

dotnet ef migrations remove #๋งˆ์ง€๋ง‰ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‚ญ์ œ
dotnet ef migrations add FixedMigration #์ƒˆ๋กœ์šด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ถ”๊ฐ€
dotnet ef database update #DB ์—…๋ฐ์ดํŠธ

 

 

3๏ธโƒฃ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ•์ œ ์ ์šฉ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ ํ›„ ์ดˆ๊ธฐํ™”)

DROP DATABASE "DBName";

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ

 

CREATE DATABASE "DBName";

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒˆ๋กœ ์ƒ์„ฑ

 

dotnet ef database update

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ์กด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ์šฉ (๊ธฐ์กด ๋ฐ์ดํ„ฐ ์œ ์ง€)

 

dotnet ef migrations remove
dotnet ef migrations add "NewMigration"
dotnet ef database update

๋˜๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋„ ์ดˆ๊ธฐํ™” ํ›„ ์ƒˆ๋กœ ์ƒ์„ฑ (๊ธฐ์กด ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์‚ญ์ œ)

 

 

4๏ธโƒฃ ์—ฌ๊ธฐ๊นŒ์ง€๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด .NET ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค..

์ €๋Š” ์ดํ‹€ ๋™์•ˆ ์˜จ๊ฐ– ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ด๋„ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๊ฒฐ๊ตญ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋”๋‹ˆ ํ•ด๊ฒฐ๋์–ด์š” ๐Ÿ˜ญ

 

 

 

๋ฐ˜์‘ํ˜•