mysql - 如何在 Coldfusion 中创建具有 UUID 名称的临时 MySQL 表?

标签 mysql coldfusion temp-tables

我正在使用 Coldfusion8MySQL 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/

相关文章:

php - 使用 PHP $_POST 插入

mysql - 使用 2 个表进行数据透视

sql - 将存储过程结果插入临时表

sql - Oracle 10 中的本地临时表(用于存储过程的范围)

oracle - 避免oracle中全局临时表的方法

php - 确定另一个日期范围内的日期范围是否已满

php - 从定义值用户名中选择所有行

coldfusion - 在 Coldfusion/Apache POI 中强制完整计算整个工作簿

hibernate - 是否可以在不使用 HBMXML 文件的情况下为 Hibernate 指定软删除过滤器?

javascript - Coldfusion url 变量