반응형

text 타입으로 되어 있는 컬럼에 데이터를 insert하려고 하자 다음과 같은 에러가 발생하였다.

Data truncation: Data too long for column

보통 텍스트형태의 데이터를 넣어봤자 500자 이내였기 때문에 이런 경우를 접해보지 못했는데 이번에 경험해보고 MYSQL의 text타입이 몇 글자 제한인지 알게 되었다.

TINYTEXT
- 범위 : 최대 255 글자

TEXT
- 범위 : 최대 65535 글자

MEDIUMTEXT
- 범위 : 최대 16777215 글자

LONGTEXT
- 범위 : 최대 4294967295 글자

65535글자면 왠만한 텍스트 데이터는 다 커버칠 것 같다.....LONGTEXT로 컬럼 type을 변경하여 처리하였다.

Solution => column type : TEXT -> LONGTEXT

반응형
반응형


자바 프로젝트 내부에서 jdbc드라이버를 연결하는 도중 다음과 같은 에러가 발생하였다.


detailMessage = "Could not create connection to database server. Attempted reconnect 3 times. Giving up."

cause = com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'KST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.



[ 소스코드 ] 

DriverManger.getConnection하는 과정에서 발생

final private static String url = "jdbc:mysql://10.111.eee.xxx:5555/db?characterEncoding=utf8";
final private static String usr = "vuser";
final private static String pwd = "pwd11111";

Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, usr, pwd);
Statement stmt = conn.createStatement();


[ 문제해결 ] 

mysql-connector-java 버전 5.1.X 이후 버전부터 KST타임존을 인식하지 못하는 이슈가 있다고 한다.

따라서 url에 serverTimezone을 추가해준다!

"&serverTimezone=UTC"

String url = "jdbc:mysql://10.111.eee.xxx:5555/adflat?characterEncoding=utf8&serverTimezone=UTC";


이렇게 하면 손쉽게 해결할 수 있다~아니면 mysql-connector-java버전을 낮추거나~

반응형
반응형

Column count doesn't match value count at row 1 메세지가 발생한다면


DB에 insert하는 데이터의 개수와 컬럼의 개수가 일치하는지 확인해보시길~



; bad SQL grammar []; nested exception is java.sql.SQLException: Column count doesn't match value count at row 1

at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:99)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)



반응형
반응형


작업 중 java.sql.SQLException: Before start of result set 오류가 발생하였다.



뭔가 하고 보니 소스코드에서 mysql에 질의를 던져 데이터를 가져와서 ResultSet에 담는데 ResultSet에서 데이터를 읽을 경우 cursor의 points를 첫 번째 로우에 맞추어주어야 한다.


즉, 결과값을 읽기전에 next() 메서드를 호출 후 사용 하여야 한다. 


[ 오류가 발생했던 소스코드 ] 




[ 문제 해결 소스코드 ] 



보다시피 result.next() 전에 result.getString()으로 값을 불러오려고 했을 때 문제가 발생했다.

result.next() while문 안으로 넣어서 해결~!

반응형

+ Recent posts