반응형
"지정된 키 'utf8mb4'가 사전에 없습니다.
C#의 SQL에 문제가 있습니다.
ExecuteReader()를 사용하려고 하면 다음 줄에 오류가 나타납니다.
MySqlDataReader reader = readcmdQuery.ExecuteReader();
System.Collections.Generic.KeyNotFoundException
HResult=0x80131577
Nachricht = The given key 'utf8mb4' was not present in the dictionary.
Quelle = System.Private.CoreLib
Stapelüberwachung:
at System.ThrowHelper.ThrowKeyNotFoundException[T](T key)
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version, String CharSetName)
at MySql.Data.MySqlClient.MySqlField.SetFieldEncoding()
at MySql.Data.MySqlClient.MySqlField.set_CharacterSetIndex(Int32 value)
at MySql.Data.MySqlClient.MySqlField.SetTypeAndFlags(MySqlDbType type, ColumnFlags flags)
at MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField field)
at MySql.Data.MySqlClient.NativeDriver.GetColumnsData(MySqlField[] columns)
at MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
at MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols)
at MySql.Data.MySqlClient.ResultSet..ctor(Driver d, Int32 statementId, Int32 numCols)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at decustomer___LAP_Projekt.MainWindow.MySQLConnector()
저는 Visual Studio나 XAMPP의 문제라고 생각했습니다.
연결 문자열에 CHARSET=utf8 추가 - 데이터베이스에서 "utf8mb4"를 "utf8_german2_ci"로 변경 - SET NAMES 'utf8' 실행 - MySQL 업데이트 - 다른 클라이언트에서 시도됨 - MySQL Installer 8.0.20(이전:xampp)으로 새 mysql 서버 설정
코드 조각:
string connStr = CreateConnStr("localhost", "xxx", "root", "");
MySqlConnection connection = new MySqlConnection(connStr);
connection.Open();
public static string CreateConnStr(string server, string databaseName, string user, string pass)
{
string connStr = "server=" + server + ";database=" + databaseName + ";uid=" +
user + ";password=" + pass + ";CHARSET=utf8;pooling=false;Allow User Variables=True";
return connStr;
}
...
string readcmdQuery = "SELECT id, vorname, nachname FROM berater;CharSet=utf8;";
sqlcmd.CommandText = readcmdQuery;
MySqlDataReader reader = readcmdQuery.ExecuteReader();
consList.Items.Clear();
while(reader.Read())
...
제발 도와주세요.인터넷에서 다른 해결 방법을 찾을 수 없습니다.
MySql의 아주 오래된 버전을 사용하고 있는 것 같습니다.데이터: 보고하는 문제는 오래 전에 수정된 버그 58244처럼 들립니다.
아니면 약간 다른 조건에서 나타나는 약간 다른 종류의 버그를 발견했을 수도 있습니다.그렇다면 https://bugs.mysql.com/ 에서 보고하고 수정 버전을 기다릴 수 있습니다.
그러나 MySql을 제거하는 것이 좋습니다.데이터를 저장하고 MySqlConnector를 대신 설치합니다.지원됩니다.utf8mb4
처음부터 비동기 지원을 추가하고 다른 많은 버그를 수정합니다.
언급URL : https://stackoverflow.com/questions/61783752/the-given-key-utf8mb4-was-not-present-in-the-dictionary
반응형
'programing' 카테고리의 다른 글
파워셸을 사용하여 SSL 바인딩을 제거하는 방법 (0) | 2023.08.14 |
---|---|
판다 .iloc에게 단일 행 데이터 프레임을 반환하도록 강요하는 것? (0) | 2023.08.14 |
Excel VBA의 컬렉션에 키가 있는지 확인하는 일반적인 방법 (0) | 2023.08.14 |
핀치를 감지하는 가장 간단한 방법 (0) | 2023.08.14 |
요청 간의 차이점은 무엇입니까?사용자 호스트 주소 및 요청.서버 변수["REMOTE_ADDR"].문자열로() (0) | 2023.08.14 |