보뇨 다이어리

mysql utf8_unicode_ci 에러 본문

컴퓨터 관련/DB 정보

mysql utf8_unicode_ci 에러

보뇨 2018. 10. 25. 11:19
반응형

이게....정확히 어떤 에러가 떴는데 잘 기억이 안난다....히스토리에서도 삭제됨 ㅠㅠ 

일단 간단하게 에러에 대해 정리하자면 평소와 같이 api 통신하는데 갑자기 어떤식의 방식으로는 어떤식의 방식으로 변환할수없습니다 라는 에러를 발견함

해결할수있는 방법은 총 2가지

DB 내에 스트링 타입 속성을 바꿔주는거랑 쿼리내에서 바꾼상태로 보내주는것

근데 DB는 잘 모르고 괜히 만졌다가 큰일날수도있을꺼라 생각해서 쿼리내에서 바꾸기로함 

아주아주 비법은 간단하다 그냥 string 타입에 덫붙혀주면 된다 아래와 같이 그럼 쓱오!

정확히 19번 라인하고 28번라인이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE DEFINER=`super`@`%` PROCEDURE `procEmployeeInsert`(
    dataName varchar(128),
    dataBirthday varchar(10),
    dataTel varchar(64),
    dataAddress varchar(256),
    dataImage varchar(128),
    dataGradeId int(10unsigned,
    dataManagerId int(10unsigned,
    dataDivisionId int(10unsigned,
    dataIsManager tinyInt(4),
    dataWage int(10unsigned,
    dataHourlyWage tinyInt(4),
    dataHireType int(10unsigned,
    dataRoleId int(10unsigned
)
BEGIN
    DECLARE resultId INT;
    
    SELECT id INTO resultId FROM employee WHERE name=dataName COLLATE utf8_unicode_ci AND birthday=dataBirthday COLLATE utf8_unicode_ci 
    AND division_id=dataDivisionId;
    
    IF resultId > 0 THEN
        SET resultId = -1;
        SELECT resultId as id;
    ELSE
    BEGIN
        INSERT INTO employee values (null, dataName, dataBirthday, dataTel, dataAddress, dataImage, Now(), dataGradeId, dataManagerId, dataDivisionId, dataIsManager, dataWage, dataHourlyWage, dataHireType, dataRoleId);
        SELECT id INTO resultId FROM employee WHERE name=dataName COLLATE utf8_unicode_ci AND birthday=dataBirthday COLLATE utf8_unicode_ci
        AND division_id=dataDivisionId;
    END;
    END IF;
        SELECT resultId as id;
END
cs


반응형