从 Firebird 数据库获取列名列表时出错 table
Error while getting list of column names from a Firebird database table
我尝试了几次使用 python 获取 firebird 中的表列表我试过这个 Get list of column names from a Firebird database table:
select rdb$field_name from rdb$relation_fields where rdb$relation_name=factura;
但没有用,它显示错误 ('Error while preparing SQL statement:\n- SQLCODE: -206\n- Dynamic SQL Error\n- SQL error code = -206\n- Column unknown\n- FACTURA\n- At line 1, column 72', -206, 335544569)
也尝试使用 show table factura;
但我收到错误 ('Error while preparing SQL statement:\n- SQLCODE: -104\n- Dynamic SQL Error\n- SQL error code = -104\n- Token unknown - line 1, column 1\n- show', -104, 335544569)
所以,我不知道如何得到这个表格列表。
仅当 factura 是 table
的名称时才有效
注意:我已将查询包含在您的回答中,因为这样更容易回答。
您收到 column unknown - FACTURA 错误,因为您的 where-clause 是:
where rdb$relation_name=factura
您对 factura
的未加引号使用使其成为 rdb$relation_fields
的列名,但不存在这样的列。这会导致错误。
相反,您想要 select 行的 rdb$relation_name
列具有(字符串)值 factura
,这意味着您需要将其括在单引号中(如中所示) the accepted answer of the question you refer to):
where rdb$relation_name='factura'
或者,给定列名的区分大小写规则:
where rdb$relation_name='FACTURA'
show table factura
不起作用的原因是,它不是 Firebird SQL 语法的一部分,它只存在于 Firebird ISQL 工具中。
此外 table 名称必须大写,否则将找不到任何名称。尝试:
select rdb$field_name
from rdb$relation_fields
where rdb$relation_name='FACTURA'
order by rdb$field_position;
order by 是可选的。 单引号和大写table名称不是。
我尝试了几次使用 python 获取 firebird 中的表列表我试过这个 Get list of column names from a Firebird database table:
select rdb$field_name from rdb$relation_fields where rdb$relation_name=factura;
但没有用,它显示错误 ('Error while preparing SQL statement:\n- SQLCODE: -206\n- Dynamic SQL Error\n- SQL error code = -206\n- Column unknown\n- FACTURA\n- At line 1, column 72', -206, 335544569)
也尝试使用 show table factura;
但我收到错误 ('Error while preparing SQL statement:\n- SQLCODE: -104\n- Dynamic SQL Error\n- SQL error code = -104\n- Token unknown - line 1, column 1\n- show', -104, 335544569)
所以,我不知道如何得到这个表格列表。
仅当 factura 是 table
的名称时才有效注意:我已将查询包含在您的回答中,因为这样更容易回答。
您收到 column unknown - FACTURA 错误,因为您的 where-clause 是:
where rdb$relation_name=factura
您对 factura
的未加引号使用使其成为 rdb$relation_fields
的列名,但不存在这样的列。这会导致错误。
相反,您想要 select 行的 rdb$relation_name
列具有(字符串)值 factura
,这意味着您需要将其括在单引号中(如中所示) the accepted answer of the question you refer to):
where rdb$relation_name='factura'
或者,给定列名的区分大小写规则:
where rdb$relation_name='FACTURA'
show table factura
不起作用的原因是,它不是 Firebird SQL 语法的一部分,它只存在于 Firebird ISQL 工具中。
此外 table 名称必须大写,否则将找不到任何名称。尝试:
select rdb$field_name
from rdb$relation_fields
where rdb$relation_name='FACTURA'
order by rdb$field_position;
order by 是可选的。 单引号和大写table名称不是。