Solved

FireDAC connection to Firebird DB open but SQL qry doesn't recognise tables

Posted on 2014-09-26
11
1,146 Views
Last Modified: 2014-10-08
I have a simple test application using FireDAC.  I have a TFDConnection connected to a Firebird database. I can open the connect to the database. I have a query linked to the FDCOnnection with a simple SQL statement
SELECT * FROM CUSTOMERS. When I open the query I get the error message Table unknown.
I have connected to the database using RazorSQL. I can see the tables and the data with no problem. So I know CUSTOMERS is a valid table. So why the error message?
0
Comment
Question by:Rodbach
  • 6
  • 5
11 Comments
 
LVL 19

Expert Comment

by:NickUpson
Comment Utility
make the query "select count(*) from mon$transactions;" that is an internal table that must exist in any firebird database
0
 

Author Comment

by:Rodbach
Comment Utility
I tried SELECT COUNT(*) FROM mon$transactions and again it tells me it is an unknown table.
Yet if I use my original query IBExpert I don't have this problem as long as I surround the table name with double quotes.
I can query all the tables.
I also tried the double quotes in the SQL string of my query, same result. The full error message is:
[FireDAC][Phys][FB]Dynamic SQL error
SQL error code = -204
Table unknown
CUSTOMERS
At line1 column 10.

I get the same message with a change of name when I try querying mon$transactions.
0
 
LVL 19

Expert Comment

by:NickUpson
Comment Utility
what are the connection parameters in the 2 circumstances, although the message is no what I'd expect it could be a permission issue. Ensure you connect as sysdba or the database owner if different and see if that changes things
0
 

Author Comment

by:Rodbach
Comment Utility
Using sysdba and masterkey both with IBExpert and from my Delphi app.
I can connect using a TFDConnection but when I open the TFDQuery I get the unknown table message.
0
 
LVL 19

Expert Comment

by:NickUpson
Comment Utility
sorry, the problem seems to be the delphi end, which is not my area, the database seems fine. I would check ALL the connection parameters but thats a long shot
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:Rodbach
Comment Utility
Thanks for the suggestions though. I'll continue investigating. If I find out anything I'll post it here.
0
 

Accepted Solution

by:
Rodbach earned 0 total points
Comment Utility
I found the answer. I noticed that when checking with IBExpert the table name was 'Customers' and not 'CUSTOMERS' and that IBExpert surrounded it with double quotes. Tried that and it worked.
Not that that is mentioned in any of the notes. Nor did I see that mentioned in Cary jensen's white paper.
0
 
LVL 19

Expert Comment

by:NickUpson
Comment Utility
aaah

firebird names (tables, fields, etc) are case-insensitive by default, whatever you put its treated as the same, if you surround with quotes then it is taken as a literal and must be specified the same way whenever referenced.

sounds like you created "Customers" when you wanted to create customers or CUSTOMERS no quotes so the same thing
0
 

Author Comment

by:Rodbach
Comment Utility
Could be. I'll see if that's the case. Can't imagine why I'd create a table name with quotes though. And it was the same with every table name in the database. I'll cetainly bear that in mind from now on. Thanks for the info
0
 
LVL 19

Expert Comment

by:NickUpson
Comment Utility
if you typed it as Customer in IBExpert you may not have noticed
0
 

Author Closing Comment

by:Rodbach
Comment Utility
Because I found a workaround that did what I wanted.
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
Viewers will learn how to use the Hootsuite Dashboard.
An overview on how to enroll an hourly employee into the employee database and how to give them access into the clock in terminal.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now