오프라인에서 VS C# + MariaDB 를 돌려야 할 일이 있어서 이래저래 설치하고
heidisql portable ( 윈도우용 MariaDB Client),
를 설치하고 돌려봤는데,
빌드는 되는데 자꾸 DB Connection 이후 DBNull 이라고 try catch 에서 튕긴다.
ERROR System.InvalidCastException: 개체를 DBNull에서 다른 형식으로 캐스팅할 수 없습니다.
MySqlConnection.Open() System.InvalidCastException: Object cannot be cast from DBNull to other types
뒤져보니, Mysql 아닌 MariaDB 로 연결하려면, 닷넷 4.5.2 이상에 대응되는 Mysql Connector 버전을 쓰라고 한다. -> 이거 아니다.
인터넷 뒤져보면 닷넷 버전이 낮아서 라고 이야기하는 게 있는데, 그게 아니라 MariaDB / Mysql.Data.dll 의 자체 버그다.
오히려 버전이 MariaDB 버전이 높아서 생기는 버그란다.
MariaDB 10.10 버전의 경우, Information_Schema.Collations 라는 시스템 정의 사용 관련 테이블에서 ID 값으로 빈( NULL ) 값을 뭉텅뭉텅 넣어놔서 그런거 같다. 잘 모르겠어... 어쨌던, DB를 MariaDB 10.9 이하로 낮추라는데?
DB 버전을 낮추기 싫다면, VS 에서 사용하는 DB Connector 를 Mysql.Data 에서 MysqlConnector 로 변경.
이를 위해서는 두 가지가 필요하다.
1. .NET 버전을 4.5.2 이상 유지.
-> .NET Framework 4.8
https://learn.microsoft.com/ko-kr/dotnet/framework/install/on-windows-10
-> .NET Framework 개발자용 별도 설치. 이게 있어야 VS 에서 개발자용 컴파일이 가능하다.
.NET 프레임워크 개발자용 과거 버전 설치
https://learn.microsoft.com/ko-kr/dotnet/framework/install/guide-for-developers
.NET 프레임워크 4.8.0 개발자용 Development Kit 버전 다운로드
.NET 프레임워크 4.8.0 개발자용 Development Kit 버전의 한글 추가 팩
https://dotnet.microsoft.com/ko-kr/download/dotnet-framework/thank-you/net48-developer-pack-kor
2. MysqlConnector 패키지 다운로드 및 설치.
https://www.nuget.org/packages/MySqlConnector
이걸로 해결.
만약 Nuget Offline 설치가 필요하다면 오프라인에서 Nuget 패키지 설치 설명 링크를 참고하자.
끝.
'프로그램 > C#' 카테고리의 다른 글
vs2015 signtool error : no certificates were found that met all the given criteria (1) | 2018.05.27 |
---|---|
grid 안의 셀에서 keyDown, KeyUp, KeyPress 이벤트 처리. (0) | 2018.01.16 |
C#에서, PictureBox 의 이미지를 파일에서 Load 할 때, 파일이 사용중으로 나오는 경우. (1) | 2016.10.31 |
C#에서 압축 작업할 때, ZipFile 클래스 / 객체가 없다고 나오는 경우. (0) | 2016.06.12 |
C# 의 combobox 에서, 드롭다운의 선택한 값을 받을수 없을 때. (3) | 2016.04.13 |