[JDBC] MySQL Error Code 1175 발생시 해결법
2021. 3. 13. 14:34ㆍ문제들
문제
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
- mysql workbench에서 테스트 할 때 발생한다.
원인
- 단순히 풀어서 보면 where key column이외 다른 column을 가지고 update를 하기 때문인 것으로 보인다.
mysql> SHOW VARIABLES LIKE 'sql_safe_updates';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| sql_safe_updates | ON |
+------------------+-------+
- 이 때 값을 확인해보면 sql_safe_update 는 on으로 되어있다.
mysql> select @@sql_safe_updates;
+--------------------+
| @@sql_safe_updates |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.00 sec)
- 하지만 값은 0 / 1로 되어있다. 변수 이용시 주의
해결
mysql> set sql_safe_updates=0;
- 안전모드를 해제하면 key column 이외의 column을 where 절에서 사용할 수 있다.
주의할 점
variable의 설정은 현재 mysql db session에서만 유효하다.
Java 환경(JDBC - mysql)에서의 적용
Connection conn = null ;
PreparedStatement pstmt = null;
String sql = null;
try {
conn = getConnection();
// 변경사항은 mysql 해당 DB세션에서만 유지된다.
sql = "set sql_safe_updates=0;";
pstmt = conn.prepareStatement(sql);
pstmt.executeQuery();
pstmt.close();
//------------------------------
//---- UPDATE query 문 준비 및 실행
//------------------------------
} catch (SQLException e) {
e.printStackTrace();
}finally {
}
- 설정의 변경은 현재 db 세션에서만 유지되기 때문에 다시 재설정하지 않아도 된다.
happy 하다.
'문제들' 카테고리의 다른 글
AttributeError: module 'tensorflow' has no attribute 'contrib' (0) | 2021.05.25 |
---|---|
[JavaScript] forEach is not a function error (0) | 2021.03.26 |
file load - FileNotFoundError: [Errno 2] No such file or directory: (1) | 2020.09.08 |
Permission denied (publickey).fatal: Could not read from remote repository. (0) | 2020.08.13 |
Error: Hostname/IP doesn't match certificate's altnames (0) | 2020.08.12 |