同一线程内,前面执行创建临时表脚本,后面马上跟着使用这个临时表,会偶发的报临时表不存在,代码如下:
``java
String sqlStr;
sqlStr = " CREATE TEMPORARY TABLE
temp_table(\n" +
"
idVARCHAR ( 32 ) NOT NULL COMMENT 'id',\n" +
" PRIMARY KEY (
id)\n" +
" ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '临时表';";
dao.execute(Sqls.create(sqlStr));
sqlStr = " select " +
" fm.id from
temp_tableAS fm";
dao.execute(Sqls.create(sqlStr)); // 这里会报错,Table
temp_table` doesn't exist,不是必现,偶发的
```
是因为每次执行sql语句都可能不是同一个连接导致的吗?我其它项目用mybatis没出这个问题,是不是我有什么地方没有考虑到?
另外,没有加事务,是不是加了事务就能保证同一线程的数据库连接不变?有没有在不加事务的情况下也能解决这个问题的方案?