Я унаследовал большое приложение, работающее на CF 9.01.
Я в процессе переноса его на Lucee 5.3.3.62, но у меня есть некоторые проблемы, и я знаю, что должен заменить его на:но у этого приложения есть ~ 1000 исходных файлов (!!), и замена всех этих тегов в настоящее время не очевидна по временным причинам.
Lucee выдает такие ошибки, как:
«Имя объекта или столбцаотсутствует или пуст. Для операторов SELECT INTO убедитесь, что у каждого столбца есть имя. Для других операторов ищите пустые псевдонимы. Псевдонимы, определенные как «» или не допускаются. Измените псевдоним на допустимое имя. ”
Сначала я подумал, что были проблемы с полем даты, потому что Люси обрабатывает их иначе, чем 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), который называется «one»
Это мое тестовое приложение:
<cfset Form.Field1 = "Field1">
<cfset Form.Field2 = "Field2">
<cfoutput>
<cfinsert datasource="one"
tablename="LuceeTest01"
formfields="Field1, Field2">
</cfoutput>
Когда я запускаю это, я получаю ту же ошибку. Есть идеи почему? Полный след здесь: https://justpaste.it/6k0hw
Спасибо!
EDIT1:
Любопытно. Я попытался использовать «драйвер JDBC типа 4 jTDS для MS SQL Server и Sybase» в качестве драйвера источника данных, и теперь ошибка:
Компонент имени базы данных квалификатора объекта должен быть именем текущегобаза данных.
Это восходит к этому утверждению:
{call []..sp_columns 'LuceeTest01', '', '', 'null', 3}
Когда я пытаюсь это сделать в Microsoft SQL Server Management Studio, я получаю ту же ошибку. Тем не менее, когда я указываю имя базы данных («один» в качестве третьего аргумента), в MS SQL SMS нет ошибок.
EXEC sp_columns 'LuceeTest01', '', 'one', 'null', 3
Разве Люси не должна использовать этот аргумент из конфигурации источника данных или чего-то еще?
EDIT2:
В соответствии с рекомендациями @Redtopia, когда указываются «tableowner» и «tablequalifier», он работает для драйвера jTDS. Будет использовать это как обходной путь. Обновленный пример кода:
<cfset Form.Field1 = "Field1">
<cfset Form.Field2 = "Field2">
<cfinsert datasource="onecfc"
tableowner="dbo"
tablename="LuceeTest01"
tablequalifier="one"
formfields="Field1,Field2">
РЕДАКТИРОВАТЬ3:
Ошибка подана здесь: https://luceeserver.atlassian.net/browse/LDEV-2566