of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation ‘=‘.
Не нашел другого решения кроме как поменять поле с utf8 на utf8mb. А если мне не нужен utf8mb, получается мне нужно будет на уровне кода проверят все значения которые передаю в запрос?
Поправьте, если я не прав... Можно конвертонуть все в универсальную кодировку: #!/bin/bash ipAddress="192.168.0.42"; mysqlPort="3306"; MSQL="mysql --defaults-file=/root/.secrets/mysql/root -h${ipAddress} -P${mysqlPort}"; for database_name in $(${MSQL} -BNe "SHOW DATABASES;" | grep -v -E '(^information_schema$|^performance_schema$|^mysql$|^sys$)'); do ${MSQL} -e "ALTER DATABASE ${database_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;"; for table_name in $(${MSQL} -BNe "SHOW TABLES IN ${database_name};"); do ${MSQL} -e "ALTER TABLE ${database_name}.${table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"; done; done; А потом добавить вот такой конфиг файлик: echo "\ #[client] #default-character-set = utf8 #[mysql] #default-character-set = utf8 [mysqld] character-set-server = utf8 #collation-server = utf8_general_ci collation-server = utf8_unicode_ci " > /etc/mysql/mysql.conf.d/charset-utf8.cnf
Обсуждают сегодня