Mysql Can';t创建表'&书信电报;表名>';(错误编号:22)

Mysql Can';t创建表'&书信电报;表名>';(错误编号:22),mysql,Mysql,我得到以下信息: Can't create table 'tempabcd' (errno: 22) 此错误发生在以下查询(简化)运行数千次之后 DROP TABLE IF EXISTS tempabcd; CREATE TEMPORARY TABLE tempabcd (id int(11) NOT NULL, PRIMARY KEY (id)) ENGINE=MyISAM; INSERT INTO tempabcd VALUES ('1'),('2'),('3'); Select id

我得到以下信息:

Can't create table 'tempabcd' (errno: 22) 
此错误发生在以下查询(简化)运行数千次之后

DROP TABLE IF EXISTS tempabcd;
CREATE TEMPORARY TABLE tempabcd (id int(11) NOT NULL, PRIMARY KEY (id)) ENGINE=MyISAM; 
INSERT INTO tempabcd VALUES ('1'),('2'),('3');
Select id from tempabcd
Union
Select id from othertable
DROP TABLE IF EXISTS tempabcd;
查询在开始时运行良好,但由于某种原因,它在一段时间后失败。发生错误时,所有新查询都返回相同的错误


我读到错误22是由于MySQL试图访问一个路径无效的文件,但是在这种情况下,在我遇到此错误之前,此查询成功运行了数千次-如果临时路径设置不正确,怎么会出现这种情况?

ERRNO:22表示MySQL正在尝试访问具有无效路径的文件。MySQL不太可能生成无效路径,因此您需要检查临时路径设置是否正确

有关更多信息,请查看

还要检查这些行:-

CREATE TEMPORARY TABLE tempabcd (id int(11) NOT NULL, PRIMARY KEY (id)) .........
INSERT INTO tempabcd VALUES ('1','2','3'); <-- Passing 3 values here
创建临时表tempabcd(id int(11)不为空,主键(id))。。。。。。。。。

插入tempabcd值('1','2','3') 在查询的第3行中,您将传递3个值,以便

**
错误1136(21S01):列计数与第1行的值计数不匹配**

找到了导致此问题的原因。在某些罕见的情况下,创建的临时表不包含任何行,并执行以下sql:

DROP TABLE IF EXISTS tempabcd;
CREATE TEMPORARY TABLE tempabcd (id int(11) NOT NULL, PRIMARY KEY (id)) ENGINE=MyISAM; 
INSERT INTO tempabcd VALUES ();
..... 
DROP TABLE IF EXISTS tempabcd;
这将生成一个错误,但临时表已创建且未删除。然后,在该错误发生足够频繁后,达到打开文件的限制,并返回错误

Can't create table '<table name>' (errno: 22) 
无法创建表“”(错误号:22)

他回来了。阻止查询插入0条记录解决了此问题。

您检查了吗?是的,我阅读了此问题,但由于此错误仅在成功运行多次后才发生,因此我认为my.ini文件中设置的路径没有问题。当错误发生时,我假设临时路径位于本地文件系统上?
查询返回相同的错误。
-此时,您是否可以连接到mysql服务器进程以查看实际未找到的路径?我假设临时路径位于本地文件系统上=是。我不熟悉strace是strace的windows等价物吗?对不起,sql中的输入错误。只有在查询成功运行数千次后,才会发生此错误。那么,这条路径怎么会突然失效呢。