데이터 잘라내기:1행의 'logo' 열에 대한 데이터가 너무 깁니다.
MySQL 테이블의 BLOB 열에 사진을 삽입하려고 하면 예외가 발생합니다.
Data too long for column 'logo' at row 1.
JDBC는 다음과 같습니다.
int idRestaurant = 42;
String restoname= "test";
String restostatus= "test";
InputStream fileContent = getUploadedFile();
int fileSize = getUploadedFileSize();
Class.forName("com.mysql.jdbc.Driver");
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/resto" , "root" , "" )) {
PreparedStatement ps = conn.prepareStatement("insert into restaurants (idRestaurant, restaurantName, status, logo) values(?,?,?,?)");
ps.setInt(1, idRestaurant);
ps.setString(2, restoname);
ps.setString(3, restostatus);
ps.setBinaryStream(4, fileContent, fileSize);
ps.executeUpdate();
conn.commit();
}
이 문제는 어떻게 해결하나요?
열에 허용된 것보다 큰 데이터를 삽입하려고 합니다.logo
.
필요에 따라 다음 데이터 유형 사용
TINYBLOB : maximum length of 255 bytes
BLOB : maximum length of 65,535 bytes
MEDIUMBLOB : maximum length of 16,777,215 bytes
LONGBLOB : maximum length of 4,294,967,295 bytes
사용하다LONGBLOB
이 예외를 피하기 위해
데이터 유형 사용LONGBLOB
대신BLOB
를 참조해 주세요.
저는 다음 솔루션이 효과가 있었습니다.db에 연결할 때 데이터가 너무 길면 잘라내야 함을 지정합니다(jdbc ComplianceTruncation).내 링크는 다음과 같습니다.
jdbc:mysql://SERVER:PORT_NO/SCHEMA?sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'&jdbcCompliantTruncation=false
문자열 크기를 늘리면 나중에 DB에 저장하려는 문자열이 새 크기보다 길면 동일한 문제가 발생할 수 있습니다.
편집: STRICT_TRANS_탭LES도 sql_mode에서 삭제해야 합니다.
일반적으로 문자열은 짧은 텍스트에 사용해야 합니다.디폴트로는VARCHAR(255)
솔루션:엔티티에서 길이가 있는 주석 @Column을 사용합니다.
예:
@Entity
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
//..
@Column(length = 1000) //1000 will be fine
private String imgProfile;
}
언급URL : https://stackoverflow.com/questions/21522875/data-truncation-data-too-long-for-column-logo-at-row-1
'programing' 카테고리의 다른 글
vuex namesthed 모듈 상태에 대한 getter 및 setter를 생성하는 방법 (0) | 2022.12.06 |
---|---|
MySQL 5.7.10에서 JSON 데이터 유형 열을 업데이트하는 방법 (0) | 2022.12.06 |
클래스와 타입의 차이 (0) | 2022.12.06 |
php에서 로그 파일을 만드는 방법 (0) | 2022.12.06 |
SQL은 A열에 대한 결과를 먼저 표시한 후 B열에 대한 결과를 표시합니다. (0) | 2022.12.06 |