제목에서 언급 한 터키 문자와 관련된 문제가 있습니다. 여기MySQL을 사용한 터키어 문자 인코딩
111 Connect [email protected] on anketsis_main
111 Query select ilgiAlaniFunc(43,'kıvılcım')
111 Query select id Into ret from ilgi_alanlari where ilgi_alani_adi= NAME_CONST('ilgi_alani_ismi',_utf8'k' COLLATE 'utf8_turkish_ci') limit 1
111 Query insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id) values (NAME_CONST('idKullanici',43), NAME_CONST('ret',54))
당신이 'kıvılcım가'K '로 켜지는지 볼 수 있습니다
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `ilgiAlaniFunc`(
idKullanici INT,
ilgi_alani_ismi varchar(255) CHARSET utf8 COLLATE utf8_turkish_ci
) RETURNS varchar(255) CHARSET utf8 COLLATE utf8_turkish_ci
READS SQL DATA
DETERMINISTIC
BEGIN
-- Function logic here
DECLARE ret int DEFAULT -1;
select id Into ret from ilgi_alanlari
where ilgi_alani_adi=ilgi_alani_ismi limit 1;
IF(ret = -1) then
INSERT INTO ilgi_alanlari(ilgi_alani_adi) values (ilgi_alani_ismi);
SELECT last_insert_id() into ret;
END IF;
insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id)
values (idKullanici, ret);
RETURN ret;
END
이것은 내가 실행 쿼리의 덤프입니다 : 내가 MySQL을 함수를 만들었습니다. 첫 번째 터키 문자 뒤에 MySQL이 모든 것을 지운다. 당신은 '안녕하세요'안녕하세요 '사방을 볼 수 있듯이
120 Query select ilgiAlaniFunc(44,'Hello')
120 Query select id Into ret from ilgi_alanlari where ilgi_alani_adi= NAME_CONST('ilgi_alani_ismi',_utf8'Hello' COLLATE 'utf8_turkish_ci') limit 1
120 Query INSERT INTO ilgi_alanlari(ilgi_alani_adi) values (NAME_CONST('ilgi_alani_ismi',_utf8'Hello' COLLATE 'utf8_turkish_ci'))
120 Query SELECT last_insert_id() into ret
120 Query insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id) values (NAME_CONST('idKullanici',44), NAME_CONST('ret',56))
: 여기
그리고
는 올바른 덤프입니다.내 스키마의 모든 데이터 정렬은 utf8_turkish_ci in입니다. 편집 : 내 질문에 질문이 포함되어 있지 않은 것으로 나타났습니다. 그래서 여기 있습니다 : MySQL이 내가 생각하는 것보다 더 큰 문자열을 전송한다고 믿게 만들 수 있습니까?
와우 덕분에 마술처럼 작동했습니다. – interlude
한숨 ... 나를 웃게했다. 하하. – Brendan