2015/07/28

PostgreSQL EF Npgsql ConnectionString

app.config 설정에서 관련하여 발생할수 있는 오류메시지 :

- 초기화 문자열의 형식이 인덱스 0에서 시작하는 사양에 맞지 않습니다.
- 지정된 파일을 찾을 수 없습니다.  Npgsql.NpgsqlFactory.

 

<connectionStrings>
    <add name="myDBConext"
         connectionString= "Server=xx;Port=5432;User Id=xx;Password=xx;Database=xx;"
         providerName="Npgsql" />

</connectionStrings>

<entityFramework>

    <defaultConnectionFactory
          type="Npgsql.NpgsqlConnectionFactory, Npgsql.EntityFramework" />

   <providers>
     <provider invariantName="Npgsql" 
           type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
 
   </providers>
</entityFramework>

<system.data>

    <DbProviderFactories>
      <remove invariant="Npgsql" />
      <add name="Npgsql Data Provider"
           invariant="Npgsql"
           support="FF"
          description=".Net Framework Data Provider for Postgresql"
          type="Npgsql.NpgsqlFactory, Npgsql" />

    </DbProviderFactories>
</system.data>

 

 


2015/07/27

PostgreSQL - libintl-8.dll & database cluster initialisation failed

설치환경 :
Windows Server 2012 R2
Setupfile : postgresql-9.4.4-3-windows-x64.exe

설치과정에서, 발생할수 있는 오류로  설치 로그를 확인해 보니 수동으로 해결 가능.

 

[1]  libintl-8.dll  참조 오류
  -> 설치시 bin 폴더에 해당 파일이 존재하지만 참조 오류가 발생함.
       uninstall 후, libintl-8.dll 를 System32 에 복사후, 다시 install 실행.

 

[2] database cluster initialisation failed 오류 팝업 메시지
  -> 이 오류 메시지는,.  DB 설정 및 폴더등의 체크/설정을 하는 initcluster.vbs 에서 리턴하는 메시지.

  =>  여러 커뮤니티 글에서, 특정 계정 생성 및 계정 권한으로 설치를 하라고 하지만
         그런 문제는 아닌 것으로 보이며, 
        initcluster 스크립트에서 파라미터로 받는 값에 문제가 있을 때 발생하는 것으로 추정.

     해결방법 : 
        1. postgresql-9.4.4-3-windows-x64.exe 를 실행하여 에러가 발생하더라도 설치 완료 함.

        2. 에러가 있는 상태로 설치하면, DB 구성 및 기본 DB, 서비스 등록이 되어 있지 않음.
             -> 수동으로 진행하면 됨.

        3.  PostgreSQL\9.4\installer\server  의 initcluster.vbs 를 직접 실행하여 설정.
            예 : initcluster.vbs 
                         "NT AUTHORITY\NetworkService" "postgres" "postgres(*)123"
                               "D:/Database/PostgreSQL/9.4"
                               "D:\Database\PostgreSQL\data" 5432 "DEFAULT"

                 위 값에서, NT 계정은 실제 서비스 실행 계정 지정, superuser / superuserpwd
                 이렇게 실행하면, DB 구성/기본DB/NT폴더권한 이 자동으로 설정됨.

        4. 윈도우 서비스 수동 등록
            예 : pg_ctl.exe register -N "postgresql-x64-9.4" -D "D:\Database\PostgreSQL\data" -w

          

     정상 작동. 끝.

 

 

 


가장 많이 본 글