Задать вопрос
@Studik_001
Student

Как убрать ERROR 1366 (HY000): Incorrect string value: '\xF4\xA9"\xDA\xA7\x0D...'?

В моей базе данных есть таблица:
CREATE TABLE `customer` (
`customer_id` INT AUTO_INCREMENT,
`first_name` varchar(40) NOT NULL,
`last_name` varchar(40) NOT NULL,
`phone` varchar(30),
`email` varchar(50),
`street` varchar(50),
`city` varchar(50) DEFAULT "Lviv",
`state` varchar(50),
`zip_code` varchar(50),
`login` varchar(150) NOT NULL,
`password` varchar(255),
PRIMARY KEY (`customer_id`)
);

Мне нужно было сделать триггер который кодирует пароль:
CREATE TRIGGER customer_password BEFORE
INSERT ON customer FOR EACH ROW
SET NEW.password = AES_ENCRYPT(NEW.password, 'test');

И когда я пытаюсь вставить элемент в таблицу:
INSERT INTO customer VALUES (NULL, 'Petroror', 'Petro', NULL, 'pet@gmail.com', 'Zelena', 'Lviv', NULL, NULL, 'petros', 'mypass');

У меня появляется данная ошибка:
ERROR 1366 (HY000): Incorrect string value: '\xF4\xA9"\xDA\xA7\x0D...' for column 'password' at row 1

utfmb4 пробовал..
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
https://dev.mysql.com/doc/refman/8.0/en/encryption...
and returns a binary string containing the encrypted output

И почему же бинарный кусок данных является некорректными данными для текстового поля? Ну прям решительно непонятно.
Используйте подходящий тип данных.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
AES_ENCRYPT возвращает не строку, а бинарный BLOB.
Если хотите получить из него текст, то используйте HEX().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы