Не удается исправить неверное строковое значение MySQL (уже изменить весь набор символов)

У меня есть некоторые ошибки набора символов MySQL. Я кореец, поэтому мне нужно поставить корейский в MySQL Server. но я не могу Я изменил весь набор символов и отправил запрос "SET NAMES UTF8MB4", но моя программа снова напечатала ту же ошибку.

Я пытаюсь поставить "테스트" и вставить в программу (Pawn Language)

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);

Я пытаюсь много искать и тестировать, я не могу исправить эту ошибку. Спасибо!

Серверная ОС: Ubuntu Server 16.04.3 64bit

Ошибка 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

показать переменные вроде 'char%';:

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

show create table sb_bans (Target Table):

| 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 Status:

mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper

Connection id:          54
Current database:
Current user:           root@localhost
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

1 ответ

Недостаточно информации - "напечатать снова неверное строковое значение"

  • 테스트 указывает на моджибаке
  • `` указывает на усечение
  • ????????? указывает на что-то еще.

Смотрите это для деталей о каждом.

Замечания: root (или любой SUPER пользователь) не запускается init_connect, Всякий раз, когда разрабатываете приложение на основе базы данных, укажите имя пользователя без полномочий root.

В тексте ошибки \xED \x85 \x8Cгде там на самом деле пробелы, как указано? (utf8 шестнадцатеричный ED858C.) Где же FormatEx родом из? Может ли быть так FormatEx вставленные пробелы

Другие вопросы по тегам