인프런 커뮤니티 질문&답변

son_ji123님의 프로필 이미지

작성한 질문수

[C#/.NET 8.0]어서와, WinForm은 처음이지?

EntityFramework Core DB First 소개!

PowerShell Command 입력 시 에러

24.10.05 20:15 작성

·

15

·

수정됨

0

Scaffold-DbContext "Host=localhost;Database=mydatabase;Username=myuser;Password=mypassword" Npgsql.EntityFrameworkCore.PostgreSQL -o Models


커맨드 입력 후 Models 폴더가 생성되지 않습니다.

image.png

사진은 커맨드 입력 후의 로그이며, 아래는 설치된 패키지 목록입니다.

image.png

변경해야되는 DB 이름, user,password 등은 여러번 확인을 해봤습니다 혹시 DB 이름에 _가 포함되면 안되는걸까요?
사진상으로 확인이 힘든 것 같아 아래에 로그 전문 추가하겠습니다.

Build started...

Build succeeded.

To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.

Npgsql.PostgresException (0x80004005): 3D000: "Inflearn_Winform_Test" �����ͺ��̽� ����

at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)

at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)

at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|213_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt)

at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.PoolingDataSource.<Get>g__RentAsync|33_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnection.Open()

at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(DbConnection dbConnection, DatabaseModelFactoryOptions options)

at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options)

at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions)

at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize)

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize)

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0()

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

Exception data:

Severity: ġ��������

SqlState: 3D000

MessageText: "Inflearn_Winform_Test" �����ͺ��̽� ����

File: postinit.c

Line: 1033

Routine: InitPostgres

3D000: "Inflearn_Winform_Test" �����ͺ��̽� ����

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 10. 05. 20:21

안녕하세요, 인프런 AI 인턴입니다. son_ji123님.

질문하신 PowerShell 명령어를 통해 Scaffold-DbContext를 실행하려 하셨으나, 연결하려는 데이터베이스가 존재하지 않아 에러가 발생한 것으로 보입니다. 에러 메시지에서도 “Inflearn_Winform_Test” 데이터베이스를 찾을 수 없다는 내용이 포함되어 있습니다.

이 문제를 해결하기 위해 다음 사항을 확인해보세요:

  1. 데이터베이스 존재 여부 확인: PostgreSQL에서 해당 데이터베이스(“Inflearn_Winform_Test”)가 실제로 존재하는지 확인하시고, 필요하다면 데이터베이스를 생성해 주세요.

  2. 데이터베이스 연결 정보 확인: 데이터베이스 이름, 사용자 이름, 비밀번호 등이 올바른지 다시 한 번 검토해 보시기 바랍니다. 특별히 연결 문자열에 오타가 없도록 주의해 주세요.

  3. PostgreSQL 서버 상태 확인: PostgreSQL 서버가 정상적으로 실행 중인지 확인하고, 로컬에서의 접근이 가능한 상태인지도 점검해 주세요.

한편, 데이터베이스 이름에 _ (언더바)가 포함되더라도 PostgreSQL에서는 문제가 되지 않습니다. 이보다 앞서 연결 문자열의 정확성과 데이터베이스의 존재 여부가 더 중요합니다.

비슷한 문제에 대한 기존 답변이 아래 URL에 있습니다:
- “세션2 DB CRUD 에서 실행 오류 건.”
이 질문에서는 특정 서비스 등록이 누락되어 발생한 오류를 해결한 경험을 공유하고 있습니다.

위의 조언들을 통해 문제 해결에 도움이 되시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.