일부 MySQL 문자 집합 오류가 있습니다. 저는 한국어입니다. 그래서 한국어를 MySQL 서버에 넣어야합니다. 그러나 나는 할 수 없다. 모든 문자 집합을 변경하고 "SET NAMES UTF8MB4" 쿼리를 보내지 만 내 프로그램이 다시 같은 오류를 인쇄합니다.MySQL을 수정할 수 없음 잘못된 문자열 값 (이미 모든 문자 집합 변경)
나는 "테스트" 및 프로그램에 삽입] (전당포 언어)
FormatEx(Query, sizeof(Query), "INSERT INTO %s_bans (type, ip, name, created, ends, length, reason, aid, adminIp, sid, country) VALUES \
(1, '%s', '', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + %d, %d, '%s', (SELECT aid FROM %s_admins WHERE authid = '%s' OR authid REGEXP '^STEAM_[0-9]:%s$'), '%s', \
(SELECT sid FROM %s_servers WHERE ip = '%s' AND port = '%s' LIMIT 0,1), ' ')",
DatabasePrefix, ip, (minutes * 60), (minutes * 60), banReason, DatabasePrefix, adminAuth, adminAuth[8], adminIp, DatabasePrefix, ServerIp, ServerPort);
나는 많은 검색 및 테스트를 시도 넣어 시도,이 오류를 수정할 수 없습니다. 감사합니다.
서버 OS : 우분투 서버 16.04.3 64 비트
MySQL의 오류 : '숯불 %'와 같은
L 09/11/2017 - 20:18:22: [sbpp_main.smx] Verify Insert Query Failed: Incorrect string value: '\xED \x85 \x8C ...' for column 'reason' at row 1
쇼 변수; :
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
쇼 테이블 sb_bans (목표 테이블) 작성 :
| sb_bans | CREATE TABLE `sb_bans` (
`bid` int(6) NOT NULL AUTO_INCREMENT,
`ip` varchar(32) DEFAULT NULL,
`authid` varchar(64) NOT NULL DEFAULT '',
`name` varchar(128) NOT NULL DEFAULT 'unnamed',
`created` int(11) NOT NULL DEFAULT '0',
`ends` int(11) NOT NULL DEFAULT '0',
`length` int(10) NOT NULL DEFAULT '0',
`reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`aid` int(6) NOT NULL DEFAULT '0',
`adminIp` varchar(32) NOT NULL DEFAULT '',
`sid` int(6) NOT NULL DEFAULT '0',
`country` varchar(4) DEFAULT NULL,
`RemovedBy` int(8) DEFAULT NULL,
`RemoveType` varchar(3) DEFAULT NULL,
`RemovedOn` int(10) DEFAULT NULL,
`type` tinyint(4) NOT NULL DEFAULT '0',
`ureason` text,
PRIMARY KEY (`bid`),
KEY `sid` (`sid`),
FULLTEXT KEY `reason` (`reason`),
FULLTEXT KEY `authid_2` (`authid`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 |
MySQL의 상태 :
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
Connection id: 54
Current database:
Current user: [email protected]
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 18 min 43 sec
Threads: 7 Questions: 1697 Slow queries: 0 Opens: 203 Flush tables: 1 Open tables: 118 Queries per second avg: 1.511
mysqld.cnf
[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8mb4_general_ci"
init_connect="SET NAMES utf8mb4"
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set=utf8mb4
mysql.cnf
[mysql]
default-character-set = utf8mb4
는 mysqldump.cnf
[mysqldump]
default-character-set = utf8mb4
그래서 ... 어떤 문자열을 삽입하려합니까? 그리고 어떻게 그리고 어떤 인코딩이 있습니까? – deceze
@deceze "테스트"를 시도하고 삽입을 사용하십시오. '인코딩이 무엇인가'라는 의미는 무엇입니까? Sry My Bad English :( – Darkhost
[tag : pawn]에서 데이터베이스에 어떻게 연결합니까? 삽입하려는 문자열은 어디에서 왔습니까? 이것은 MySQL 쪽보다 폰쪽에 관한 것입니다. 귀하의 폰 코드에 대한 세부 사항, 귀하의 MySQL 서버 구성보다 적습니다. – deceze