프로그램/C#

C# 에서 MariaDB 연결할 때, MySqlConnection.Open() System.InvalidCastException: Object cannot be cast from DBNull to other types

(주)CKBcorp., 2023. 4. 11. 17:20
반응형

오프라인에서 VS C# + MariaDB 를 돌려야 할 일이 있어서 이래저래 설치하고 

Visual Studio

Maria DB,

heidisql portable ( 윈도우용 MariaDB Client),

Mysql Connector 6.5 

를 설치하고 돌려봤는데, 

빌드는 되는데 자꾸 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 의 자체 버그다. 

 

https://stackoverflow.com/questions/74060289/mysqlconnection-open-system-invalidcastexception-object-cannot-be-cast-from-d

 

MySqlConnection.Open() System.InvalidCastException: Object cannot be cast from DBNull to other types

I have simple connectionstring to MySql (MariaDB 5.5.5-10.11.0) written in c#: MySqlConnection Database = new MySqlConnection("Server=127.0.0.1; Port=3306; Database=test; Uid=user; Pwd=MyPassw...

stackoverflow.com

오히려 버전이 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 Windows 10 프레임워크 설치 - .NET Framework

Windows 10 또는 Windows Server 2016 프레임워크를 설치 .NET 하는 방법을 알아봅니다.

learn.microsoft.com

  -> .NET Framework 개발자용 별도 설치. 이게 있어야 VS 에서 개발자용 컴파일이 가능하다.

.NET 프레임워크 개발자용 과거 버전 설치  

https://learn.microsoft.com/ko-kr/dotnet/framework/install/guide-for-developers 

 

.NET 프레임워크 4.8.0 개발자용 Development Kit 버전 다운로드

https://dotnet.microsoft.com/ko-kr/download/dotnet-framework/thank-you/net48-developer-pack-offline-installer

.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 패키지 설치 설명  링크를 참고하자.  

 

끝.

반응형