Ошибка последней таблицы
, FireBird 1.5
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.35] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Ошибка последней таблицы
, FireBird 1.5
|
Сообщ.
#1
,
|
|
|
|
Открываю любую таблицу в базе данных при помощи запроса:
select * from <имя таблицы> Всё в порядке, но при попытки открыть последнюю таблицу выскакивает ошибка: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 15 user. Что это значит ?! Что я делаю не так ?! И где можно взять описания ошибок ?! с SQL сталкнулся впервый раз |
|
Сообщ.
#2
,
|
|
|
|
А какое у таблицы имя? Не служебное ли это слово?
|
|
Сообщ.
#3
,
|
|
|
|
Цитата fwsoft @ SQL error code = -104 Конфликт использования зарезирвированного слова user. Взять в кавычки, говорят помогает . Добавлено Цитата fwsoft @ И где можно взять описания ошибок ?! Легче выучить список зарезервированных слов (Reserved words) |
|
Сообщ.
#4
,
|
|
|
|
Цитата Bas @ Символы, используемые для экранизации, зависят от типа БД. Взять в кавычки, |
|
Сообщ.
#5
,
|
|
|
|
Цитата MIF @ А какое у таблицы имя? Не служебное ли это слово? USER |
|
Сообщ.
#6
,
|
|
|
|
Цитата fwsoft @ USER USER есть в списке Reserved words |
|
Сообщ.
#7
,
|
|
|
|
Цитата Bas @ USER есть в списке Reserved words А как тогда добраться до этой таблицы ?! В чём фокус ?! |
|
Сообщ.
#8
,
|
|
|
|
Цитата fwsoft @ А как тогда добраться до этой таблицы ?! В чём фокус ?! Цитата Bas @ Взять в кавычки |
|
Сообщ.
#9
,
|
|
|
|
Цитата fwsoft @ Если поезд далеко не ушел - переименовать таблицу. Хотя бы в _USER или USERS.А как тогда добраться до этой таблицы ?! В чём фокус ?! Цитата MIF @ Попробуй "USER", [USER]...но не гарантирую Символы, используемые для экранизации, зависят от типа БД. |
|
Сообщ.
#10
,
|
|
|
|
Запрос типа:
![]() ![]() select * from "USER" работает, но что самое интересное, если в БД есть например таблица BARCODE, то запрос типа: ![]() ![]() select * from BARCODE или select * from barcode или select * from "BARCODE" проходит, а комбинация типа: ![]() ![]() select * from "barcode" нет |
|
Сообщ.
#11
,
|
|
|
|
Цитата fwsoft @ есть синтаксис SQL применительно к конкретному серверу. Рекомендую почитать документацию и посмотреть, как там используется регистр для названий. В доках по InterBase почему-то все названия - в верхнем регистре. Наверное - неспроста. Да и имена системных таблиц и их полей - тоже. что самое интересное |
|
Сообщ.
#12
,
|
|
|
|
Самое оптимальное, это вытащить имена таблиц из БД и обращаться к ним через скобки
|
|
Сообщ.
#13
,
|
|
|
|
Самое оптимальное - изучить список зарезервированных слов до начала проектирования БД, а не после.
|
|
Сообщ.
#14
,
|
|
|
|
Цитата работает, но что самое интересное, если в БД есть например таблица BARCODE, то запрос типа: в этом и есть смысл двойных кавычек. Если без кавычек, то регистр роль не играет. Если в кавычках, то регистр имеет значение |
|
Сообщ.
#15
,
|
|
|
|
Цитата Coala @ Самое оптимальное - изучить список зарезервированных слов до начала проектирования БД, а не после. Ну да ... если сам проектируешь БД, но если БД просто стянул, то тут уже ничего не сделать и приходиться извращяться |