2014-09-29 3 views
0

Java 프로그램에서 MySQL 데이터베이스를 사용하고 있습니다. Java에서 모든 쿼리를 구현하기 전에 SQLDeveloper를 사용하여 테스트하여 작동하는지 확인합니다.MYSQL 업데이트 테이블이 Java 구현에서 작동하지 않습니다.

SQLDeveloper에서 다음 쿼리는 완벽하게 작동합니다 : 금지로

UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') 
SET t.filter = 'BANNED' 
WHERE t.filter IS NULL 

은 (그냥 제목의 목록에서 표시, 금지 된 단어 (예 : 욕설)가 포함 된 제목을 지금

. 난 자바에서이 쿼리를 구현하는 코드는 완벽하게 실행 (오류없이, 아니 예외)하지만 SQLDeveloper를 사용하는 것처럼 실제로 DB가 업데이트되지 않습니다 여기에 코드입니다.

String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;"; 
    PreparedStatement preparedStatement = connect.prepareStatement(query); 
    preparedStatement.executeUpdate(); 
    preparedStatement.close(); 

I 이 쿼리와 비슷한 다른 쿼리가 생성되어 작동합니다. 내가 놓친 게 있니?

+0

Connection.commit() 당신은 아마 모든 필드가 이미 – Mihai

+0

100 % 확신, 내가 그것을 할 수 있는지 확인하는 DB에 SELECT 쿼리를 사용하여 업데이트됩니까? 작동 어쩌려 구't 확실 사용하면 SQL 문을 커밋해야합니다 updated/not –

+0

@MarcoMicheli 질의 끝에';'를 사용할 필요는 없습니다. 서버 로그를 확인하십시오. 실패했을 경우 예외가 있어야합니다. –

답변

0

당신은

String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;"; 
PreparedStatement preparedStatement = connect.prepareStatement(query); 
preparedStatement.executeUpdate(); 
connect.commit(); 
preparedStatement.close(); 
+0

당신의 솔루션을 시도했지만 얻는 중 : java.sql.SQLException : autocommit = true 인 경우 커밋을 호출 할 수 없습니다. –

+0

'connect.commit()'을 호출하기 전에 connect.setAutoCommit (false)'; – Vito

+0

이것도 시도해 보았지만 여전히 업데이트되지 않았습니다. –

관련 문제