mysql: код ошибки [1267]; Недопустимое сочетание параметров сортировки (latin1_general_cs, IMPLICIT) и (latin1_swedish_ci, IMPLICIT) для операции '='
Я хочу сделатьpassword
столбец моей таблицы пользователя будетcase sensitive
в mysql.
Ниже приводится описание таблицы:
/*Table: mst_user*/
FIELD TYPE COLLATION
------------- ------------ -----------------
user_id VARCHAR(100) latin1_swedish_ci
first_name VARCHAR(25) latin1_swedish_ci
last_name VARCHAR(25) latin1_swedish_ci
USER_PASSWORD VARCHAR(50) latin1_swedish_ci
user_status INT(11) (NULL)
version_id INT(11) (NULL)
active_status INT(11) (NULL)
user_type INT(11) (NULL)
Чтобы сделатьUSER_PASSWORD
чувствительно к регистру я выполнил следующий запрос:
ALTER TABLE `mst_user` MODIFY `USER_PASSWORD` VARCHAR(50) COLLATE `latin1_general_cs`;
Это сработало, и поле теперь чувствительно к регистру.
Но у меня есть процедура магазина, которая выполняетSELECT
запрос к этой таблице, чтобы проверить, существует ли пользователь для данных учетных данных.
Сохраненный процесс ::
CREATE PROCEDURE `usp_password_verify`(ip_login_id VARCHAR(200),
ip_user_password VARCHAR(200),
INOUT success INT(1),
INOUT tbl_usr_password VARCHAR(100),
INOUT pkg_user_password VARCHAR(100))
BEGIN
SELECT COUNT(*)
INTO success
FROM mst_user
WHERE UPPER (user_id) = UPPER (ip_login_id)
AND USER_PASSWORD=ip_user_password;
SET tbl_usr_password = '';
SET pkg_user_password= '';
END$
Когда я вызываю этот хранимый процесс из моего кода Java, я получаю следующую ошибку:
**error code [1267]; Illegal mix of collations (latin1_general_cs,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='**
Может кто-нибудь помочь, что не так с этим? Что-то, что работает как простой запрос, выдает ошибку при выполнении его в сохраненном процессе !?