在过程mysql中不创建临时表

时间:2014-10-11 09:13:44

标签: mysql stored-procedures

我正在程序中创建一个临时表

DROP PROCEDURE IF EXISTS proc1
GO

CREATE PROCEDURE proc1()
BEGIN

    DROP TEMPORARY TABLE IF EXISTS temp_tbl1;

    CREATE TEMPORARY TABLE temp_tbl1
    (id int, name_c varchar(300));

    INSERT INTO temp_tbl1
    SELECT id, name_c FROM user_tbl;

END;

该过程已成功编译。当我作为调用proc1()运行该过程时,它将错误消息作为未知数据库' test';

我可以在mysql的程序中使用临时表吗?我正在使用mysql 5.1服务器。

1 个答案:

答案 0 :(得分:0)

如果您无法创建任何表格,那么您在data目录中遇到服务器配置问题或权限问题(请参阅datadir变量)。

如果问题仅限于TEMPORARY表,那么MySQL错误报告中会出现bug - 错误消息应该是"Unable to write to %tmpdir"而不是"Unknown database"。检查MySQL变量tmpdir包含的内容并创建该目录。例如。如果是/usr/tmp,请执行:

mkdir /usr/tmp
chmod 1777 /usr/tmp