programing

MariaDB 10에서 Connector/NET과 트랜잭션을 열 때 구문 오류 발생

projobs 2022. 9. 25. 10:54
반응형

MariaDB 10에서 Connector/NET과 트랜잭션을 열 때 구문 오류 발생

웹 애플리케이션을 MariaDB 10 서버에 연결하려고 합니다.MySQL Connector/NET을 사용하여 버전 5에서 이미 문제없이 하고 있습니다.버전 10에서는 소프트웨어가 BeginTransaction을 실행할 때 쿼리를 실행하기 전에 오류가 발생합니다.

IDbConnection dbConnection=new MySqlConnection(connectionString);
dbConnection.BeginTransaction();

에러는 전형적인 오류입니다.

[MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1]
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +384
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +379
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) +119
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +901
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +2308
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +133
MySql.Data.MySqlClient.MySqlConnection.BeginTransaction(IsolationLevel iso) +761
MySql.Data.MySqlClient.MySqlConnection.BeginDbTransaction(IsolationLevel isolationLevel) +19

커넥터 소스 코드를 확인했는데 실행 시 발생하는 것 같습니다.

cmd.CommandText = "BEGIN";
cmd.ExecuteNonQuery();

이 파일의 https://github.com/mysql/mysql-connector-net/blob/6.9/Source/MySql.Data/Connection.cs

Connector/NET의 문제로 질문을 제출했지만, HeidiSQL에서 "BEGIN"을 실행하면 동일한 오류가 발생하므로 일반적인 문제일 수 있습니다.

구분 기호에 연결되어 있는 것처럼 보이지만, 커넥터 내부의 문제이기 때문에 이상하게 들립니다.또한 HeidiSQL과 나의 소프트웨어는 단순히 연결 문자열을 바꾸는 것만으로 MariaDB 5에서 정상적으로 동작합니다.

서버 구성이 원인일 수 있습니다.

원래의 커넥터/NET에는 많은 문제가 있었습니다.또, 실제로 해결할 수 없는 이미 알려진 버그가 있습니다.또, 원래의 커넥터의 배후에 있는 팀(하나라도 있는 경우)은 신경쓰지 않는 것 같습니다.

결국 오픈 소스 MySqlConnector로 전환했습니다.정말 대단합니다.

이 프로토콜은 처음부터 구현되어 공식 커넥터의 알려진 수많은 버그 목록을 수정합니다(아래 참조).

또, 진정한 비동기 기능등의 추가 기능도 광고합니다.

공개: 나와 우리 팀은 언급된 프로젝트와 전혀 관련이 없습니다.공식 프로젝트의 버그로 인해 전환해야 했고, 그 이후로 우리는 행복한 사용자입니다.

언급URL : https://stackoverflow.com/questions/54020332/syntax-error-when-opening-a-transaction-with-connector-net-on-mariadb-10

반응형