Меню

Ошибка sql error 206

Change your case, as it looks like your database layer is automatically quoting it if you use CamelCase.

A quick test in a Firebird 2.5 database here shows:

SQL> select t1.usuario, t1.NoExisto from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-T1.NOEXISTO
-At line 1, column 23


SQL> select t1.usuario, "t1.NoExisto" from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-t1.NoExisto
-At line 1, column 34

As you see, the database engine generates an error with camel case only when it gets the SQL query using quotes.

I suggest you to try myfield_id or use the correct case you have in your field name.

    select 
        table1.pkfield1,
        table1.field_no,
        table1.fk1_id,
        table1.fk2_id,
        table1.myfield_id, 
        table1.bfield,
        table2.desc1,
        table2.desc2,
        table2.desc3
    from table2
    right outer table1 on (table2.pk1_id = table1.fk1_id)
    Order by table1.fk1_id, table1.field_no desc

Submitted by: Ukrtelecom (ukrtelecom)

WORK —
insert into stat_wtmp (bill_serv_id,
login,
domain_name,
calling_station_id,
called_station_id,
nas_ip_address,
framed_ip_address,
nas_port_id,
session_id,
connect_info,
time_begin,
session_active,
cur_input_octets,
cur_output_octets,
/* connect_info,*/
time_end
)
values(:CUR_BILL_SERVICE_ID,
:login,
:domain_name,
:caller_id,
:called_id,
:nas_ip_addr,
:user_ip_addr,
:nas_port_id,
:session_id,
:connect_info,
:packet_timestamp,
:cur_session_active,
:input_octets,
:output_octets,
/* :connect_info,*/
:packet_timestamp);

NOT WORK —
insert into stat_wtmp (bill_serv_id,
login,
domain_name,
calling_station_id,
called_station_id,
nas_ip_address,
framed_ip_address,
nas_port_id,
session_id,
connect_info,
time_begin,
session_active,
cur_input_octets,
cur_output_octets,
connect_info,
time_end
)
values(:CUR_BILL_SERVICE_ID,
:login,
:domain_name,
:caller_id,
:called_id,
:nas_ip_addr,
:user_ip_addr,
:nas_port_id,
:session_id,
:connect_info,
:packet_timestamp,
:cur_session_active,
:input_octets,
:output_octets,
:connect_info,
:packet_timestamp);

Dynamic SQL Error.
SQL error code = -206.
unknown ISC error 336397210.
unknown ISC error 336397208.
FIELD — connect_info;
TABLE STAT_WTMP:

CREATE TABLE STAT_WTMP (
ID_WTMP_ITEM ID /* ID = INTEGER DEFAULT 0 */,
BILL_SERV_ID ID /* ID = INTEGER DEFAULT 0 */,
NAS_IP_ADDRESS IPADDRESS /* IPADDRESS = VARCHAR(15) */,
NAS_PORT_ID BIGINTEGER /* BIGINTEGER = BIGINT */,
TIME_BEGIN ACCOUNT /* ACCOUNT = INTEGER */,
TIME_END ACCOUNT /* ACCOUNT = INTEGER */,
SESSION_TIME COUNTER /* COUNTER = INTEGER */,
CALLING_STATION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
CALLED_STATION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
FRAMED_IP_ADDRESS IPADDRESS /* IPADDRESS = VARCHAR(15) */,
SESSION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
INPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CUR_INPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
OUTPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CUR_OUTPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CONNECT_INFO VARCHAR64 /* VARCHAR64 = VARCHAR(64) */,
LOGIN VARCHAR32 /* VARCHAR32 = VARCHAR(32) */,
DOMAIN_NAME VARCHAR64 /* VARCHAR64 = VARCHAR(64) */,
SESSION_ACTIVE TRUEFALSE DEFAULT 1 /* TRUEFALSE = INTEGER */,
DATE_WR DATETIME DEFAULT ‘now’ /* DATETIME = TIMESTAMP */,
SPEED_UP VARCHAR16 /* VARCHAR16 = VARCHAR(16) */,
SPEED_DOWN VARCHAR16 /* VARCHAR16 = VARCHAR(16) */
);

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    информация о разделе

    user posted image Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ.

    >
    [Firebird] В запросе не определяется поле
    , Рекурсивный запрос не разруливает поле

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    18.10.12, 10:04

      Full Member

      ***

      Рейтинг (т): 5

      Привет. У меня есть иерархическая таблица XXXX. Пытаюсь для нода определить парентов и чайлдов, чтобы произвести вставку в другую таблицу. Однако Firebird 2.1 ругается на:

      Column does not belong to referenced table.
      Dynamic SQL Error.
      SQL error code = -206.
      Column unknown.
      C.ID.
      At line 8, column 46.

      Сам текст запроса: поля есть. Если поменять куски CHILDREN и PARENT_LIST местами, то будет ругаться на то, что нет PT.ID. В чем может быть проблема?

      ExpandedWrap disabled

        MERGE INTO MO_DATAGROUP_LINK DGL USING

        (

        WITH RECURSIVE

        CHILDREN AS (

        SELECT 923 ID FROM RDB$DATABASE

        UNION ALL

        SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID

        ),

        PARENT_LIST AS (

          SELECT PARENTID ID FROM SPRT WHERE ID = 923

          UNION ALL

          SELECT PARENTID ID FROM SPRT T JOIN PARENT_LIST PT ON T.ID = PT.ID)

        SELECT ID FROM PARENT_LIST WHERE ID IS NOT NULL

        UNION ALL

        SELECT ID FROM CHILDREN

        ) PX ON DGL.DATAID = PX.ID AND DGL.DATAGROUPID = 896 AND DGL.TABLENAME = ‘XXXX’

        WHEN NOT MATCHED THEN INSERT (DATAGROUPID, TABLENAME, DATAID) VALUES (:D_VALUE, ‘XXXX’, PX.ID);


      Romkin



      Сообщ.
      #2

      ,
      19.10.12, 15:39

        А где у тебя таблица C? ;)


        spy_



        Сообщ.
        #3

        ,
        22.10.12, 07:11

          Full Member

          ***

          Рейтинг (т): 5

          Romkin, «JOIN CHILDREN C ON», не?


          Romkin



          Сообщ.
          #4

          ,
          22.10.12, 08:46

            Присоедини псевдоним ко всем полям, оно путается скорее всего


            spy_



            Сообщ.
            #5

            ,
            23.10.12, 04:57

              Full Member

              ***

              Рейтинг (т): 5

              Если присоединять сюда «SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID» по аналогии с выборкой PARENT_LIST, то толку никакого, к сожалению, та же ошибка. Кстати, если поменять местами блоки CHILDREN и PARENT_LIST как есть, то будет уже ругаться на выборку PARENT_LIST аналогично.


              Игорь Акопян



              Сообщ.
              #6

              ,
              23.10.12, 07:33

                простите, а это что без запятой пишется?

                ExpandedWrap disabled

                  SELECT PARENTID ID FROM


                spy_



                Сообщ.
                #7

                ,
                23.10.12, 14:02

                  Full Member

                  ***

                  Рейтинг (т): 5

                  Игорь Акопян, а почему оно должно писаться с запятой?

                  Добавлено 23.10.12, 14:05
                  Я не понимаю, господа, вы теоретически пытаетесь что-то понять и найти синтаксические ошибки? Не проще ли к себе в IBExpert или FlameRobin скопировать запрос и проверить?
                  Структура таблиц тривиальна:
                  SPRT (ID — int PK, PARENTID — int FK to SPRT)
                  MO_DATAGROUP_LINK (ID — int PK, DATAGROUPID — int, TABLENAME — varchar, DATAID — int)
                  Причем достаточно двух таблиц, т.к. MO_DATAGROUP_LINK.DATAID — это ссылка на SPRT.ID без FK (там FK не нужен по архитектурным причинам).


                  Alex2011



                  Сообщ.
                  #8

                  ,
                  08.11.12, 09:17

                    Member

                    **

                    Рейтинг (т): 1

                    Думаю что проще(или даже НАДО) в хр.процедуре сделать,особенно если там рекурсия.(Разбираться с твоим запросом лень) Я когда-то писал хр.процедуру (с запросом выходил большой гемор-я решил,что это невозможно сделать,хотя может и не так-не претендую на истину в последней инстанции),в которой определял верхнего парента,всех чайдлов,если не ошибаюсь.(давно было,но процедуру найти,думаю, можно) Похоже и тебе что-то аналогичное надо?

                    Сообщение отредактировано: Alex2011 — 08.11.12, 10:14

                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                    0 пользователей:

                    • Предыдущая тема
                    • Базы данных: SQL
                    • Следующая тема

                    Рейтинг@Mail.ru

                    [ Script execution time: 0,0282 ]   [ 15 queries used ]   [ Generated: 30.01.23, 05:03 GMT ]  

                    0 0 голоса
                    Рейтинг статьи
                    Подписаться
                    Уведомить о
                    guest

                    0 комментариев
                    Старые
                    Новые Популярные
                    Межтекстовые Отзывы
                    Посмотреть все комментарии

                    А вот еще интересные материалы:

                  • Яшка сломя голову остановился исправьте ошибки
                  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
                  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
                  • Ошибка sql ambiguous column name
                  • Ошибка srs mercedes w163