반응형
나는 이것을 가지고있다:
public static void createTemporaryTable() {
Statement s = null;
sentence = "CREATE TEMPORARY TABLE Book (ISBN int NOT NULL, " +
"title varchar(45), author varchar(45), price double, PRIMARY KEY (`ISBN`));";
try {
s = Conexion.getInstancia().createStatement();
s.executeUpdate(sentence);
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
s.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
그때:
public class System {
public static void main(String[] args) {
SqlSentencesList.createTemporaryTable();
}
}
그러나 select * from Book
을 실행하면 MySQL은 Book
테이블이 존재하지 않는다고 알려줍니다. Java에서 오류 메시지가 표시되지 않으므로 테이블을 만들어야하지만 그렇지 않습니다.
mysql에서 직접 임시 테이블을 생성하기 위해 동일한 SQL 문장을 실행하면 정상적으로 작동합니다.
이것은 내 Conexion
클래스입니다.
public class Conexion {
private static Connection conexion = null;
private Conexion() {
}
public static Connection getInstancia() {
if (conexion == null) {
try {
Class.forName("com.mysql.jdbc.Driver");
conexion = DriverManager.getConnection(
"jdbc:mysql://localhost/Esquema_VentaLibros","gustavo", "123581321");
} catch (SQLException sqlex) {
sqlex.printStackTrace();
} catch(ClassNotFoundException cnfex) {
cnfex.printStackTrace();
}
return conexion;
}
else {
return conexion;
}
}
}
해결 방법
연결이 닫히면 임시 테이블이 자동으로 삭제됩니다.
테이블을 만들 때 TEMPORARY 키워드를 사용할 수 있습니다. TEMPORARY 테이블은 현재 연결에만 표시되며 연결이 닫히면 자동으로 삭제됩니다. 이는 두 개의 서로 다른 연결이 서로 충돌하지 않고 또는 동일한 이름의 기존 비 TEMPORARY 테이블과 동일한 임시 테이블 이름을 사용할 수 있음을 의미합니다. (임시 테이블이 삭제 될 때까지 기존 테이블은 숨겨집니다.)
일부 작업을 수행하기 위해 임시 테이블을 생성하려면 작업을 시작할 때 생성하고 이에 대해 UPDATE / SELECT 문을 실행해야합니다. 연결을 닫으면 자동으로 삭제되며 동일한 임시 테이블 이름을 사용하는 다른 연결과 충돌하지 않습니다.
참조 페이지 https://stackoverflow.com/questions/10143649
반응형
'MySql' 카테고리의 다른 글
MySQL 치명적인 오류 : 'DateTime ::'메시지와 함께 포착되지 않은 예외 'Exception' (0) | 2021.02.15 |
---|---|
MySQL 오류 : 'where 절'의 알 수없는 열 (0) | 2021.02.15 |
MySQL '데이터로드'와 관련된 MySQL 권한 오류 (0) | 2021.02.15 |
MySQLi DELETE QUERY가 PHP 스크립트에서 작동하지 않습니다. (0) | 2021.02.15 |
MySQL 장고 ORM, 일별 그룹 (0) | 2021.02.15 |
댓글