Этот запрос работает:Жар имя поля спасаясь
SELECT r.ID FROM SomeTable r
Но следующий дает мне Token unknown - "ID"
ошибку:
SELECT r."ID" FROM SomeTable r
Почему это, и что это путь правильно бежать имена полей в Firebird?
Этот запрос работает:Жар имя поля спасаясь
SELECT r.ID FROM SomeTable r
Но следующий дает мне Token unknown - "ID"
ошибку:
SELECT r."ID" FROM SomeTable r
Почему это, и что это путь правильно бежать имена полей в Firebird?
Вы используете базу данных диалекта 1 (или вы подключили диалект 1 к диалекту соединения). Dialect 1 не поддерживает цитируемые идентификаторы, он был устаревшим с тех пор, пока не существовал Firebird (когда в 1999/2000 году он оставался Interbase 6 beta).
В диалекте 1, двойные кавычки используются для строк (символ/VARCHAR), так что синтаксический анализатор не видит "ID"
как имя объекта, но в виде строки, поэтому он бросает Токена неизвестной ошибки, как это ожидая имени объекта.
Если это новая база данных, перезапустите ее с помощью базы данных диалекта 3. Если это существующая база данных, вам действительно стоит подумать о ее миграции на диалект 3. См. «Перенос баз данных на диалект 3» в руководстве «Начало работы с Interbase 6» (доступно от http://www.firebirdsql.org/en/reference-manuals/, оно находится в полном наборе, указанном в конце страницы).
Я проверяю этот вопрос на firebird2.5, и он не повторяется на нем.
Обнаружен только на старом сервере Firebird1.5
.
Итак, правильное решение - обновление сервера до 2,5 с меньшим количеством ошибок :)
Что такое диалект базы данных? Диалект 1 не поддерживает цитируемые имена объектов, а двойные кавычки на диалекте 1 - это просто (char) строки. Я предполагаю, что база данных - это диалект 1. –
@MarkRotteveel, да, это был «Dialect1», я обновляю сервер базы данных до 2.5 и теперь это «Dialect3». Есть ли способ перейти на «Dialect3» на firebird1.5? –
Диалект 3 был по умолчанию с начала Firebird (что означает: с Interbase 6). Таким образом, ваша база данных была явно создана как диалект 1 (или она предварительно задает Firebird), это может означать, что она требует/зависит от конкретного поведения на диалекте 1. Примечания по обновлению диалекта 1 до диалекта 3 см. В главе «Начало работы с Interbase 6.0» в главе «Перенос баз данных на диалект 3». Он доступен по адресу http://www.firebirdsql.org/en/reference-manuals/ (в соответствии с инструкциями Interbase 6.0, полный набор) –