我正在使用 Coldfusion8
和 MySQL 5.0.91
并尝试创建一个临时表,从 CSV 导入一些数据,验证,存储在数据库中并删除临时表。
我可以直接在 MySQL 中执行所有步骤,它可以毫无问题地运行。但是,当我尝试在 Coldfusion 中创建临时表时,我不断收到 MySQL 错误。
这是我的:
<cfset variables.tt = CreateUUID()>
<cfquery datasource="#session.datasource#">
DROP TEMPORARY TABLE IF EXISTS ##variables.tt;
CREATE TEMPORARY TABLE ##variables.tt (
tmp_kto VARCHAR(7) DEFAULT ''
, tmp_kz VARCHAR(3) DEFAULT ''
, tmp_preisliste VARCHAR(1) DEFAULT ''
, tmp_eg VARCHAR(3) DEFAULT ''
) ENGINE=MEMORY;
</cfquery>
这是行不通的。我还尝试了 #variables.tt#
和普通的 variables.tt
但我一直遇到同样的错误,而当我直接在 MySQL 中运行代码时它工作正常(使用表名称“测试”)
问题:
我不知道我做错了什么。表名是否有最大长度?
感谢您提供一些见解。
编辑:
我得到了常见的错误:
you have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near
'CREATE TEMPORARY TABLE #variables.tt (tmp_sa VARCHAR(3) DEFAULT ''
最佳答案
问题的最可能来源是 uuid 不适合作为表名。一方面,它包含连字符。我不知道 MySQL 是否允许这样做,但我不记得在表名中看到过连字符。
我们有类似的情况,但使用的是红砖。我们想为临时表创建唯一的名称。我们在自定义标签中编写的方法是使用字符串“temp”,后跟一个随机数。我们还进行了一些 try/catch 操作,以防我们对随机数感到非常不走运。
我几年前写了那个标签。如果我再做一次,我可能会用 cftoken、cfid 和 tickcount 替换随机数。
此外,您不能在创建表格之前将其删除。
关于mysql - 如何在 Coldfusion 中创建具有 UUID 名称的临时 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16002140/