【问题标题】:MySQL CREATE TEMPORARY TABLE ErrorMySQL 创建临时表错误
【发布时间】:2012-11-29 21:53:57
【问题描述】:

我正在运行 EasyPHP 5.4.6 和 MySQL 5.5.27-log。

当我尝试使用以下内容创建临时表时:

CREATE TEMPORARY TABLE temp_table (x int);

我收到以下错误:

ERROR 1005 (HY000): Can't create table 'temp_table' (errno: 22)

但是,如果我删除“TEMPORARY”,它会起作用。

临时表的语法是从示例页面逐字复制的。我尝试在谷歌上搜索错误编号,但没有任何结果。

谁能想到会发生什么?

【问题讨论】:

  • 您使用的是哪个操作系统?你能显示你的mysql配置文件吗?
  • count 是保留字。尝试不同的列名。
  • 我不确定:mysql> CREATE TEMPORARY TABLE temp_table (count int);查询正常,0 行受影响(0.11 秒)mysql>
  • 这就是我害怕的。它看起来像一个错误。我真的不想安装不同的堆栈:(
  • 我正在寻找它。它不在我的安装文件夹中。操作系统是 WinXP。

标签: mysql easyphp


【解决方案1】:

errno: 22 表示 MySQL 正在尝试使用无效路径 (fopen -> INVAL) 访问文件。 MySQL 不太可能生成无效路径,因此请检查您的临时路径是否设置正确。如果您的 MySQL 配置中有自定义设置 tmpdir,请确保它是有效路径。如果不是,请使用SHOW VARIABLES LIKE '%tmp%' 检查当前值;如果某些内容不正确或缺失,请检查系统的 TEMP 环境变量是否设置正确。欲了解更多信息,请查看http://dev.mysql.com/doc/refman/5.5/en/temporary-files.html

【讨论】:

  • 成功了。 my.ini 没有 tmpdir 变量,所以我只添加了一个并将其设置为路径。现在一切正常。谢谢!
  • 很高兴我能帮上忙。不过,我仍然会仔细检查为什么您的系统的 TEMP 路径设置不正确;这可能会让您在未来更加头疼。
  • 一旦有机会,我会调查一下。
【解决方案2】:

确保您使用的用户已授予create_tmp_table_priv 权限(mysql 数据库的表user

【讨论】:

  • 用户这样做。用户是root :)。但我也手动检查了权限表以​​防万一。
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 2017-04-09
  • 2014-12-16
  • 1970-01-01
  • 2015-04-18
  • 2010-11-03
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多