2017-05-23 8 views
2

.NET.NET 1.1 프로젝트에서 사용할 MySQL을 사용하여 ORMLite 공급자를 평가하는 ServiceStack에서 작업하고 있습니다. 나는 호기심이 많은 문제를 겪고 있습니다. 문제가 무엇인지 확실하지 않으며,이 문제를 해결할 수있는 방법에 대한 지침을 찾고 있습니다.ServiceStack ORMLite를 사용하는 MySql.Data.MySqlClient.MySqlException

표준 Docker 컨테이너에서 .Net Core app 및 표준 MySql 컨테이너에서 MySql을 실행하고 있습니다. MySQL을 성공적으로 실행하고 Workbench 도구와 연결할 수있었습니다.

내가 할 수없는 것은 웹 응용 프로그램의 실행 코드가 MySQL 컨테이너에 성공적으로 연결되도록하는 것입니다. 나는 다양한 조합을 시도했다. IP 주소 나 호스트 이름이 틀린 사람들은 호스트가 알려지지 않았다는 의미있는 오류가 발생했습니다.

그러나 MySQL 컨테이너에 사용되는 서버 이름 또는 IP 주소 값이 사용되는 시나리오에서 일반적인 MySQLException 오류가 발생합니다. 사용자 이름과 암호가 정확합니다. 나는 루트 계정을 사용하여 잠재적 인 보안 문제가 없는지 확인하기까지했습니다.

다음은 연결하려는 위치의 코드 스 니펫입니다. 이 설정은 로컬 SQL db 파일을 사용하여 잘 작동했는데 분리 할 수 ​​없었던 Docker 또는 MySQL 구성 중 하나가 누락되었습니다.

const string connectionString = "Server=3400f112c973:3306;Database=ServiceDB;Uid=root;Pwd=my-secret-pw;"; 
     container.Register<IDbConnectionFactory>(
      new OrmLiteConnectionFactory(connectionString, MySqlDialect.Provider)); 

     using (var db = container.Resolve<IDbConnectionFactory>().Open()) 
     { 
      if (db.CreateTableIfNotExists<TypeExample>()) 
      { 
       //Add seed data 
      } 
     } 

답변

2

나는 내 시나리오를 파악했습니다.

MySQL 연결 문자열에서 비표준 포트를 사용하는 경우 port 매개 변수를 사용하여 다른 포트를 지정하고 표준 포트를 사용하는 경우 포트를 완전히 생략해야합니다.

내 문제는 내가 항상 사용 하였다

"서버 = 서버 이름 : 포트을;" 잘못된 형식이며 "Server = servername; 포트 = 포트;"이어야합니다. 비표준 포트 번호를 사용하는 경우에는 Port =를 생략 할 수 있습니다.