小编Gun*_*erO的帖子

ColdFusion 9.01-> Lucee 5.3.3.62和<cfinsert> / <cfupdate>

我继承了一个在CF 9.01上运行的大型应用程序。
我正在将其移植到Lucee 5.3.3.62的过程中,但是存在一些问题,我知道我应该将其替换为,但是此应用程序有〜1000个源文件(!!),并且当前替换所有这些标签由于时机原因不明显。
Lucee抛出如下错误:

“对象或列名丢失或为空。对于SELECT INTO语句,请验证每个列都有一个名称。对于其他语句,请查找空别名。别名定义为“”或不允许。将别名更改为有效名称。”

起初,我认为日期字段存在问题,因为Lucee与CF 9.01的处理方式不同,但事实并非如此。因此,我创建了一个测试表(在MS-SQL Server 2008R2上):

CREATE TABLE [dbo].[LuceeTest01](   
  [Field1] [nvarchar](50) NULL,
  [Field2] [nvarchar](50) NULL ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

在Lucee中,我用作数据源:Microsoft SQL Server(供应商Microsoft),称为“一个”

这是我的测试应用程序:

<cfset Form.Field1 = "Field1">
<cfset Form.Field2 = "Field2">
<cfoutput>
    <cfinsert datasource="one"
        tablename="LuceeTest01"
        formfields="Field1, Field2">
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到同样的错误。知道为什么吗?完整的跟踪在这里:https : //justpaste.it/6k0hw

谢谢!

编辑1:很
好奇。我尝试使用“用于MS SQL Server和Sybase的jTDS Type 4 JDBC驱动程序”作为数据源驱动程序,现在错误是:

对象限定符的数据库名称部分必须是当前数据库的名称。

这可以追溯到以下语句:

{call []..sp_columns 'LuceeTest01', '', '', 'null', 3}
Run Code Online (Sandbox Code Playgroud)

当我在Microsoft SQL Server Management Studio中尝试此操作时,出现相同的错误。但是,当我指定数据库名称(“ one”作为第三个参数)时,MS SQL SMS中没有错误。

EXEC sp_columns 'LuceeTest01', '', 'one', 'null', 3
Run Code Online (Sandbox Code Playgroud)

Lucee不应从数据源配置中获取此参数吗?

编辑2: …

sql-server coldfusion cfml lucee

5
推荐指数
1
解决办法
99
查看次数

如何在 ColdFusion &lt;2016 中保留结构中的分配顺序

ColdFusion 不保留元素分配给结构的顺序。
在我的特定情况下,当我需要从这个结构创建一个 SOAP 信封并且接收者需要以特定顺序在信封中获取数据时,这会产生问题。
从 ColdFusion 2016 及更高版本开始,StructNew() 方法中有一个“type”选项,您可以在其中指定“Ordered”。不幸的是,我还在 CF9.02 上……例如(在 CF9 中):

<cfscript>
       myStruct=StructNew();
       myStruct.one=StructNew();
       myStruct.one.item1="Old Trafford";
       myStruct.one.item2="Anfield";
       myStruct.two=StructNew();
       myStruct.two.item3="Stamford Bridge";
       myStruct.two.item4="Villa Park";
       myStruct.three=StructNew();
       myStruct.three.item5="St James Park";
       myStruct.three.item6="Emirates Stadium";
       WriteDump(myStruct);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

输出:

{"ONE":{"ITEM2":"Anfield","ITEM1":"Old Trafford"},"THREE":{"ITEM6":"Emirates Stadium","ITEM5":"St James Park"},"TWO":{"ITEM4":"Villa Park","ITEM3":"Stamford Bridge"}}
Run Code Online (Sandbox Code Playgroud)

如您所见,订单被打乱了。

第二个问题是大写。所有项目都转换为大写...
这是 SOAP 信封的问题,因为它区分大小写。

coldfusion struct

2
推荐指数
1
解决办法
211
查看次数

标签 统计

coldfusion ×2

cfml ×1

lucee ×1

sql-server ×1

struct ×1