Sql error code 104 token unknown

InterBase ошибка 104 Firebird/InterBase Решение и ответ на вопрос 44603

Pavel181818

0 / 0 / 0

Регистрация: 15.07.2009

Сообщений: 6

1

21.07.2009, 11:26. Показов 13865. Ответов 3

Метки нет (Все метки)


Мне нужно создать таблицу в InterBase. Пишу следующий запрос:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE TABL1 (
Kod INTEGER IS NOT NULL,
Object CHAR(100),
№_dogovora_data CHAR(70),
Zakazchik CHAR(50),
Sroki CHAR(40),
Istochnik_phinansirovania CHAR(50),
Srtoim_v_bazovih_cenah NUMERIC(50,0),
Stoim_v_tekuchih_cenah NUMERIC(50,0),
Stoim_indeks_rosta_cen NUMERIC(50,0),
PRIMARY KEY (Kod)
);
COMMIT;

Выдаёт ошибку:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command…
Помогите найти ошибку.
И ещё такой вопрос: можно ли чтобы заголовки столбцов были написаны русскими буквами?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

21.07.2009, 11:26

3

АНК

125 / 116 / 17

Регистрация: 27.02.2007

Сообщений: 291

02.09.2009, 10:20

2

Я посмотрел в IBExpert’е, что за ошибка возникла. Получил вот это:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown — line 2, char 11.
IS.

тут по-моему все ясно.

Корилические символы в заголовках применять нельзя
У типа NUMERIC длина больше 18 не бывает
Зарезервированные слова (типа «OBJECT») применять нельзя
И в результате:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE TABL1 (
Kod INTEGER NOT NULL,
OBJ_ECT CHAR(100),
NUM_dogovora_data CHAR(70),
Zakazchik CHAR(50),
Sroki CHAR(40),
Istochnik_phinansirovania CHAR(50),
Srtoim_v_bazovih_cenah NUMERIC(18,0),
Stoim_v_tekuchih_cenah NUMERIC(18,0),
Stoim_indeks_rosta_cen NUMERIC(18,0),
PRIMARY KEY (Kod)
)



0



0 / 0 / 0

Регистрация: 15.07.2009

Сообщений: 6

02.09.2009, 10:25

 [ТС]

3

Я уже давно исправил эти ошибки, но всё равно спасибо



0



0 / 0 / 0

Регистрация: 08.04.2015

Сообщений: 13

24.11.2009, 08:46

4

Цитата
Сообщение от Pavel181818
Посмотреть сообщение

Я уже давно исправил эти ошибки, но всё равно спасибо

И в чем была ошибка? В этом «OBJ_ECT» что ли?Подскажите пожалуйста.



0



   braynt

10.06.11 — 11:48

Собственно, интересует вопрос кто-нибудь подключался?

У меня подключиться получилось. Но запрос не выполняется:

ошибка при выполнении запроса

по причине:

Ошибка ODBC. SQLSTATE: HY000

Номер ошибки: -104

Описание: [ODBC Firebird Driver][Firebird]Dynamic SQL Error

SQL error code = -104

Token unknown — line 1, column 12

22″. Подскажите куда копать?

   braynt

1 — 10.06.11 — 12:39

ни у кого не возникало подобных ошибок?

   AllJoke

2 — 10.06.11 — 12:40

скуль.ру

   ДенисЧ

3 — 10.06.11 — 12:40

«Token unknown»

Перевести?

   МишельЛагранж

4 — 10.06.11 — 12:41

(0) судя по ошибке — как раз нормально подключиться и не получилось.

Ругается на драйвер ODBC — вроде как не подходящий.

Как хоть подключались-то??

   ДенисЧ

5 — 10.06.11 — 12:41

(4) где ты ругань на драйвер видишь?

   МишельЛагранж

6 — 10.06.11 — 12:43

(5) вижу, что ошибку вызывает драйвер подключения.

   braynt

7 — 10.06.11 — 12:48

подключается нормально. Выводит таблицы. Выбираю нужные мне.

Ругается в режиме «Предприятия». Причем через «Управление внешними источниками» подключение происходит. А при открытии таблицы вываливается ошибка(0).

(3) Перевести я и сам смог. Текст запроса я не вижу.

   МишельЛагранж

8 — 10.06.11 — 12:53

Токен не распознался…

А здесь все форумы завалены, как лихо 1С подключается напрямую ко всем SQL-ям и прочим Файрбердам и хавает оттуда любые данные в любых количествах невзирая на различные структуры таблиц хранения и типы самих данных…

Хотя провозившись с этим «лихо подключается» перешли на промежуточную выгрузку в xls и оттуда — спокойно в 1С.

Так что поспрошайте «лихачей» ))

   МишельЛагранж

9 — 10.06.11 — 12:54

+(8) *на одном из предприятий перешли на промежуточную выгрузку в xls

   ДенисЧ

10 — 10.06.11 — 12:54

(8) Ты не поверишь. Она «лихо 1С подключается напрямую ко всем SQL-ям и прочим Файрбердам и хавает оттуда любые данные в любых количествах невзирая на различные структуры таблиц хранения и типы самих данных»

Если, конечно, ошибок в пятом и семнадцатом оперонах нет…

   ДенисЧ

11 — 10.06.11 — 12:54

(7) Вот и мы не видим. А ты его покажи..

   МишельЛагранж

12 — 10.06.11 — 12:57

(10) да-да, слышу такое с начала выпуска 8.0, а беспонтовые «подключатели» упорно портят статистику лихих подключений, tycvjnzh на выпуск 8.2 уже ))

   МишельЛагранж

13 — 10.06.11 — 12:57

*несмотря

   braynt

14 — 10.06.11 — 13:16

(11) каким образом?

   ДенисЧ

15 — 10.06.11 — 13:20

(12) у меня с 77 и до сих пор всё нормально подключается. У остальных руки.

(14) А я вижу твою программу?

   ado

16 — 10.06.11 — 13:40

(8) Угу, мы уже давно поняли, что 1С настолько плоха, что даже выход из ветвления не позволяет сделать.

   ado

17 — 10.06.11 — 14:12

(0) Запрос то покажешь?

   braynt

18 — 10.06.11 — 14:28

платформа сама генерирует запрос

   ado

19 — 10.06.11 — 14:33

(18) Телепатически?

   braynt

20 — 10.06.11 — 14:36

использую внешние источники данных. Платформа  8.2.14.460.

в конфигураторе я указываю с каких таблиц,какие поля брать.

   МаленькийВопросик

21 — 10.06.11 — 14:39

(0) зачем вам эта бд, позвольте узнать?

   МишельЛагранж

22 — 10.06.11 — 14:40

(16) мало того, и вы будете шокированы, — платформа 1С не отличает объекта Номенклатуры от объекта ТабличнаяЧасть!

(уже вижу заголовки интернетов: «1С-ники шокированы! Они не знали всей правды!»

   braynt

23 — 10.06.11 — 14:43

(21) это важно? к примеру получать данные о продажах. Просто в новой платформе появился интересный механизм — хочу посмотреть как он работает. Пока понимаю, что не очень :)

   МаленькийВопросик

24 — 10.06.11 — 14:45

(23) не самая гибкая база, для боевого использования не пойдет, имхо. используйте EXPRESS на крайняк…

   braynt

25 — 10.06.11 — 15:08

(24) к сожалению не могу

по поводу ошибки: все таки дело в ODBC драйвере. Поставил

Database Browse. Там есть возможность подключаться напрямую к БД и через ODBC. Через ODBC ошибка «Invalid stringlist index 10». А напрямую всё нормально. буду копать дальше :(

   ado

26 — 10.06.11 — 15:11

(20) Ну, там же все равно формируется какой-то запрос на языке запросов 1С. Вот на него бы взглянуть. Есть вероятность, что там, скажем, используется функциональность, не поддерживаемая Фаербирдовским диалектом SQL.

   braynt

27 — 10.06.11 — 15:26

Настроил подключение к базе

http://s012.radikal.ru/i320/1106/35/0f2b3bd49095.jpg

1с Получила список таблиц. Выбрал нужную мне таблицу, взял самую простую «Штрихкоды»

http://s50.radikal.ru/i128/1106/4d/e3228509b1aa.jpg

запустил в режиме Предприятия. выскакивает ошибка:

http://s41.radikal.ru/i091/1106/1c/beee14095771.jpg

Где я могу увидеть запрос?

   МишельЛагранж

28 — 10.06.11 — 15:27

(26) если бы да кабы — то 1С была бы самой лучшей платформой на свете ))

У меня вопрос «там же все равно формируется какой-то запрос» возникает всегда, когда получаю данные в 1С. А ответа нет уже много-много лет.

(25) т.е. вопрос решился правильным подходом, а не танцами 1С-ников с бубном? ))

   МишельЛагранж

29 — 10.06.11 — 15:27

(27)… или не решился? ))

   braynt

30 — 10.06.11 — 15:33

неа не решился. Данные я так и не смог получить — буду думать дальше (

   ado

31 — 10.06.11 — 15:49

(27) Ну, значит недопилила 1С внешние источники пока. Пользуйся ADODB по старинке.

   braynt

32 — 10.06.11 — 15:54

(31)через ADODB и работает :). Просто хотелось скорость работы посмотреть )

   ado

33 — 10.06.11 — 16:00

(32) А почему скорость работы отличаться должна?

   braynt

34 — 10.06.11 — 16:52

Ну через внешние источники все делает платформа. И я могу в запросе связать с данными 1с базы. А через ADO я получаю ТЗ.

   raykom

35 — 10.06.11 — 17:20

(0) Ошибка -104 в iSQL базах встречалась на ранних релизах при использовании комментариев. На последних релизах вроде пишут на форумах, что исправлено.

Такую же ошибку выдает неверно поставленный разделитель, особенно если такая ошибка выходит в первых строках запроса.

Т.к. тут запрос генерируется платформой, то ты его не допилишь, наверное. Попробуй обновить FB

   braynt

36 — 10.06.11 — 17:41

Спасибо! Стоит релиз 2.1. Попробую обновить до 2.5

   МишельЛагранж

37 — 10.06.11 — 17:48

(35) >>Т.к. тут запрос генерируется платформой, то ты его не допилишь

— а тру-1Сники против.

(36) в FireBird много ошибок в этих релизах (бесплатный все-таки), всегда желательно ставить последнюю версию.

Странно, что вы на 2.1 не познакомились с переполнением файла базы. Хотя, может база маленькая…

   braynt

38 — 10.06.11 — 17:58

200 мегабайт

  

ShoGUN

39 — 10.06.11 — 18:04

Давно бы уже руками через ADO запрос написал…

роли соединение и доступ к таблице

Модератор: kdv

zva

Сообщения: 4
Зарегистрирован: 18 окт 2012, 14:05

роли соединение и доступ к таблице

Имеется пользователь testuser.
Create role myrole;
Commit;
Grant all on test to myrole;
Grant myrole to testuser;
Connect ‘d:basaOfDatabd.gdb’ user ‘testuser’ password ‘test’ role ‘myrole’;
Database: ‘d:basaOfDatabd.gdb’, user testuser, role: myrole
Select * from test;

Statement failed, SQLCODE = -551

no permission for read/select access to table TEST

Выполнив запрос от sysdba

Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;

Получаю : M TESTUSER

Выполнив запрос от sysdba

Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;

Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE

почему нет разрешения?



zva

Сообщения: 4
Зарегистрирован: 18 окт 2012, 14:05

Re: роли соединение и доступ к таблице

Сообщение

zva » 19 окт 2012, 11:54

Drop role myrole;
Commit;
Create role myrole;
Commit;
Grant all on test to ROLE myrole;
Statement faild, SQLCODE = -104

Dynamic SQL Error
-SQL error code = -104
-Token unknown – line 1,char 21
-ROLE


hvlad

Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: роли соединение и доступ к таблице

Сообщение

hvlad » 19 окт 2012, 15:44

А у меня работает. Как и должно.

1. Какая версия сервера ?
2. Полный результат запроса

Код: Выделить всё

SELECT * FROM RDB$USER_PRIVILEGES WHERE RDB$USER = 'MYROLE'


zva

Сообщения: 4
Зарегистрирован: 18 окт 2012, 14:05

Re: роли соединение и доступ к таблице

Сообщение

zva » 20 окт 2012, 20:29

Версия Interbase 7.5

В первом сообщении я все описал.
Вы посоветовали уточнить назначение прав для пользователя, однако, как
я показал во втором сообщении это вызвало исключение с кодом ошибки
-104. Таким образом результат остается прежним, именно, что при подсоединении к базе данных с ролью не действуют разрешения назначенные роли. При обращении к таблице базы данных имею
Select * from test;

Statement failed, SQLCODE = -551

no permission for read/select access to table TEST

При обращении к системной таблице, уже от sysdba, имею

Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;

Получаю : M TESTUSER (почему rdb@privilege = M? и что это означает)

Выполнив запрос, также от sysdba имею

Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;

Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE

Как будто все верно, но результата нет.

Если разрешения для таблицы назначить непосредственно пользователю, то результат, как и должен быть соответствует запросу.


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: роли соединение и доступ к таблице

Сообщение

kdv » 22 окт 2012, 11:07

порядок действий
1. создать роль
2. включить в нее пользователя
3. дать роли права.

M — это membership. Тут должно быть все расписано:
http://www.ibase.ru/devinfo/sqlroles.htm

ваш пример повторил на IB 7.5 на employee.gdb, все работает
— убрал права PUBLIC на COUNTRY и EMPLOYEE
— create role MYROLE
— grant myrole to dima;
— grant all on employee to myrole

затем коннект под dima с ролью myrole. ОК.
select * from country — ошибка, нет прав
select * from employee — нет ошибки.


hvlad

Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: роли соединение и доступ к таблице

Сообщение

hvlad » 22 окт 2012, 12:50

zva писал(а):Версия Interbase 7.5

Ну так с этого нужно было начинать.
Всегда

zva писал(а):Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;

Я не просил этот запрос.
Впрочем, для IB это уже не важно.


zva

Сообщения: 4
Зарегистрирован: 18 окт 2012, 14:05

Re: роли соединение и доступ к таблице

Сообщение

zva » 22 окт 2012, 14:04

Спасибо всем!


Понравилась статья? Поделить с друзьями:
  • Sql error code 0x84b30002
  • Sql error 42p01 error relation does not exist
  • Stardew valley error on new day
  • Starcraft как изменить сложность
  • Starcraft 2 error 5 740