3

我使用带有 Delphi 的 IBDac 连接到 Firebir db,当我尝试运行该软件时突然出现此错误

动态 SQL ErrorSQL 错误代码 = -206 Column unknown table1.MyField_ID 第 6 行第 18 列

当我尝试打开数据集时出现错误

mydataset.open;

该列当然存在。它是另一个表的外键。我真的不知道为什么我会收到这个错误!这是我在组件中使用的 SQL:

CREATE TABLE table1 (
      pkfield1 INTEGER NOT NULL,
      field_no INTEGER NOT NULL,
      fk1_id INTEGER NOT NULL,
      fk2_id INTEGER,
      MyField_ID INTEGER,
      bfield INTEGER);     

  select 
        table1.pkfield1,
        table1.field_no,
        table1.fk1_id,
        table1.fk2_id,
        table1.MyField_ID, <<<------- the field that cause the error
        table1.bfield,
        table2.desc1,
        table2.desc2,
        table2.desc3
    from table2
    right outer join table1 on (table2.pk1_id = table1.fk1_id)
    Order by table1.fk1_id, table1.field_no desc

请指教

谢谢

4

1 回答 1

4

更改您的大小写,因为如果您使用 CamelCase,您的数据库层会自动引用它。

此处对 Firebird 2.5 数据库进行的快速测试显示:

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

如您所见,数据库引擎仅在使用引号获取 SQL 查询时才会生成驼峰式错误。

我建议您尝试myfield_id或使用字段名称中的正确大小写。

    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
于 2012-11-23T15:10:28.310 回答