我有一个使用MariaDB 10.2.18的多线程Spring应用程序。
几个任务会创建物理临时表-这意味着我们在任务期间CREATE TABLE
,在完成时DROP TABLE
。但是我们意识到,MariaDB在创建/删除表时会提交事务。
为了使用Spring @Transaction
,我们决定使用TEMPORARY
创建表。但是在开发过程中,我们遇到了一个奇怪的错误,我对此一无所获。
我们的一个线程(例如 thread1 )创建了这个新的TEMPORARY TABLE
并填充了它。
此后,另一个线程(例如 thread2 )负责从 thread1 和TEMPORARY TABLE
创建的INSERT INTO finalTable ... SELECT ... FROM temporaryTable
中获取数据。
这将引发SQLException
,表示由 thread1 创建的TEMPORARY TABLE
不存在。
问题是:MariaDB TEMPORARY TABLE
只能由创建它的线程使用吗?
由于MariaDB在10.2.2版中引入了INNODB_TEMP_TABLE
,所以无法确定到底发生了什么。