[MySQLWorkbench] error-on-client-connections-invalid-values-of-columnlabel 오류 해결

Hyunjun Kim·2025년 4월 27일
0

SQL

목록 보기
50/90

MySQL Workbench 에서 Client Connections를 확인하려는데 아무 것도 보이지 않는 상황이었다.

에러 메세지는 다음과 같다.
Unhandled exception: DbMySQLQuery.resultFieldStringValueByName(): MySQL_ResultSet::isNull: invalid value of 'columnLabel'



해결 방법

링크 : https://stackoverflow.com/questions/70873579/error-on-client-connections-invalid-values-of-columnlabel

C:\Program Files\MySQL\MySQL Workbench 8.0 위치에 있는 CE\modules\wb_admin_connections.py파일( line 346 ) 을 수정하면 된다.

("DB", mforms.StringColumnType, "DB", 100),

에서

("db", mforms.StringColumnType, "DB", 100),


OS Paths:

Linux (Ubuntu): /usr/lib/mysql-workbench/modules/wb_admin_connections.py

MacOS: /Applications/MySQLWorkbench.app/Contents/Resources/plugins/wb_admin_connections.py - by @QuickPrototype


이렇게 잘 나오는 모습을 볼 수 있다.


이렇게 된 이유는
MariaDB vs MySQL 결과 컬럼 이름 차이 때문
MySQL 서버는 SHOW DATABASES; 명령을 날리면 결과 컬럼명이 항상 "Database"로 나온다. (DB 대문자는 서버가 주는 게 아님)
MariaDB 서버는 같은 명령을 날리면 일부 버전에서는 컬럼명이 db (소문자)로 나올 수 있다.

Workbench는 DB라는 대문자 이름을 기대했는데,
MariaDB는 db 소문자로 주니까,
Workbench는 "어? 내가 찾는 'DB' 컬럼이 없는데?" 하고 에러를 냄.

질문답변
MariaDB는 왜 소문자 컬럼명을 주나?MariaDB는 SHOW DATABASES 결과에서 컬럼명을 항상 소문자 db 로 반환하는 설정이 기본이다. 수정할 수 없다.
워크벤치는 왜 자동으로 대소문자 구분 없이 못 찾나?워크벤치는 MySQL 서버만 가정해서, 결과에 "DB" (대문자) 컬럼이 올 거라고 하드코딩해놓았다. 대소문자 무시 매칭을 구현해두지 않았다.
MySQL 서버는 어떤 컬럼명을 주나?MySQL은 SHOW DATABASES 하면 기본 컬럼명이 Database (D 대문자)다. 서버가 DB 같은 이름을 주는 일은 없다.
그러면 왜 "DB"라고 기대했나?워크벤치 내부 코드가 서버에서 온 "Database"를 "DB"로 바꿔서 표시하도록 정해놓았기 때문이다. 서버 결과는 Database인데, 클라이언트(워크벤치)가 사용자 표시용으로 DB라고 정했다.
profile
Data Analytics Engineer 가 되

0개의 댓글