ColdFusion 9.01-> Lucee 5.3.3.62和 /

问题描述 投票:2回答:2

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

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

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

CREATE TABLE [dbo].[LuceeTest01](   
  [Field1] [nvarchar](50) NULL,
  [Field2] [nvarchar](50) NULL ) ON [PRIMARY]

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

这是我的测试应用程序:

<cfset Form.Field1 = "Field1">
<cfset Form.Field2 = "Field2">
<cfoutput>
    <cfinsert datasource="one"
        tablename="LuceeTest01"
        formfields="Field1, Field2">
</cfoutput>

[当我运行此命令时,出现相同的错误。知道为什么吗?此处完整跟踪:https://justpaste.it/6k0hw

谢谢!

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

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

这可以追溯到以下语句:

{call []..sp_columns 'LuceeTest01', '', '', 'null', 3}

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

EXEC sp_columns 'LuceeTest01', '', 'one', 'null', 3

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

sql-server coldfusion cfml lucee
2个回答
4
投票

我个人将CFINSERT重构为queryExecute并编写一个简单的InsertInto SQL语句。希望我们完全删除对cfinsert的支持。


1
投票

考虑使用

<cfscript>
 Form.Field1 = "Field1";
 Form.Field2 = "Field2";

 // Don't forget to setup datasource in application.cfc
 QueryExecute("
    INSERT INTO LuceeTest01 (Field1, Field2)
    VALUES (?, ?)
    ",
    [form.field1, form.field2]
    );
</cfscript>
© www.soinside.com 2019 - 2024. All rights reserved.