2018. 4. 20. 15:30

엔트리 프레임웍(Entity Framewor​k)에서 Mysql의 'longtext'필드에 인서트 할 때 발생하는 오류입니다.

 

필드 [필드명] 최대 길이가 '65535'인 문자열 또는 배열 형식이어야 합니다.

 

 

 

 

1. 원인

 

엔트리 프래임웍에서 string로 지정된 컬럼을 'Mysql'에서 'varchar' 취급을 해서 발생하는 문제입니다.

'varchar'는 최대크기가 '65535'인데 'longtext'는 크기가 '16777215'라  '65535'보다 큰 데이터를 넣으면 이 오류가 발생합니다.

 

마침 버그리포트에 같은 내용이 있네요.

참고 : bugs.mysql.com - Wrong handling of fixed length string columns by Entity Framework provider

 

버그리포트에 따르면 '6.4.4' 버전에서 수정되었다고 합니다.

 

 

2. 해결 방법

그런데 막상 6.4.4 이상을 설치하고 해봐도 같은 오류가 납니다 ㅋㅋㅋㅋㅋ

 

그래서 속성에 최대길이를 지정해야 합니다.

 

'longtext'로 되어 있는 모델에 'longtext'의 최대크기인 '16777215'를 지정해 줍니다.

 


[MaxLength(16777215)]
public string mawelContent { get; set; } 

 

 

 

 

이런 식으로 지정하면 됩니다.
 

 

마무리

결국 어트리뷰트를 붙여야 합니다.

mssql과 mysql 둘 다 테스트해보니 저렇게 해주면 잘 돌아갑니다.

코어에서는 없는 문제인 거 같은데 언제 수정되는 걸까요?

그냥 코어로 넘어가라는 소리인가?