Problems with PostgreSQL DBI-Link / DBD-ODBC
I have the following problem with PostgreSQL and hope you guys can help
me out in this matter: I try to get a remote connection to any database
(e.g. MS-SQL or MS Access) using DBI-Link and DBD:ODBC. My problem is,
that everything seems fine so far, however I don't know how to use the
parameters for "make_accessor_functions()". I searched the net for it,
but can only find samples for Perl-Scripting, but I need a sample for
using it directly in SQL.
This is what I've come up so far. Hope you can point me to the right
direction.
SELECT make_accessor_functions(
'dbi:ODBC:Northwind::dbi_link.data_source,
'sa'::text,
NULL::text,
'---
AutoCommit: 1
RaiseError: 1
'::dbi_link.yaml,
NULL::dbi_link.yaml,
NULL::text,
NULL, ::text,
'Northwind'::text
);
I have a ODBC connection named "Northwind".
The error message I'm always receiving (for the MS-SQL sample) is:
ERROR: error from Perl function: error from Perl function: duplicate key
violates unique constraint "dbi_connection_data_source_key" at line 94.
at line 35.
SQL state: XX000
I'm using following components under Windows XP
postgresql-8.2.5-1
pgadmin3-1.8.0
DBI-1.59
dbi-link-2.0.0
DBD-ODBC-1.05
Thanks in advance.
On Mon, Oct 29, 2007 at 03:44:05PM +0100, Pit M. wrote:
I have the following problem with PostgreSQL and hope you guys can
help me out in this matter: I try to get a remote connection to any
database (e.g. MS-SQL or MS Access) using DBI-Link and DBD:ODBC. My
problem is, that everything seems fine so far, however I don't know
how to use the parameters for "make_accessor_functions()". I
searched the net for it, but can only find samples for
Perl-Scripting, but I need a sample for using it directly in SQL.This is what I've come up so far. Hope you can point me to the right
direction.SELECT make_accessor_functions(
'dbi:ODBC:Northwind::dbi_link.data_source,
'sa'::text,
NULL::text,
'---
AutoCommit: 1
RaiseError: 1
'::dbi_link.yaml,
NULL::dbi_link.yaml,
NULL::text,
NULL, ::text,
'Northwind'::text
);I have a ODBC connection named "Northwind".
The error message I'm always receiving (for the MS-SQL sample) is:
ERROR: error from Perl function: error from Perl function: duplicate key
violates unique constraint "dbi_connection_data_source_key" at line 94.
at line 35.
SQL state: XX000
It looks like you're trying to connect the same data_source and
user_name twice. Check whether the existing one works :)
Are the documents unclear on the idea that you only run
make_accessor_functions() once per remote (data_source,user_name)
pair per local database?
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate
Hi David!
Thanks for the fast reply. So you mean that I might already have created
a connection but am still trying to create the same one again?
Check whether the existing one works :)
So how can I test it?
What is the correct way of accessing this data source in a select statement?
Concerning the documents, I wouldn't say that they are unclear about
make_accessor_functions(). The problem is, that in the dbi-link
documents (quote: "Do the following, with the appropriate parameters.
"Appropriate parameters" come from the perldoc of the appropriate
DBD...") and in the dbi-odbc documents I can't find any information
about the correct use of the parameters for the ODBC-connection. That's
why I tried to create the connection so many times.
Regards,
Pit
David Fetter wrote:
Show quoted text
On Mon, Oct 29, 2007 at 03:44:05PM +0100, Pit M. wrote:
I have the following problem with PostgreSQL and hope you guys can
help me out in this matter: I try to get a remote connection to any
database (e.g. MS-SQL or MS Access) using DBI-Link and DBD:ODBC. My
problem is, that everything seems fine so far, however I don't know
how to use the parameters for "make_accessor_functions()". I
searched the net for it, but can only find samples for
Perl-Scripting, but I need a sample for using it directly in SQL.This is what I've come up so far. Hope you can point me to the right
direction.SELECT make_accessor_functions(
'dbi:ODBC:Northwind::dbi_link.data_source,
'sa'::text,
NULL::text,
'---
AutoCommit: 1
RaiseError: 1
'::dbi_link.yaml,
NULL::dbi_link.yaml,
NULL::text,
NULL, ::text,
'Northwind'::text
);I have a ODBC connection named "Northwind".
The error message I'm always receiving (for the MS-SQL sample) is:
ERROR: error from Perl function: error from Perl function: duplicate key
violates unique constraint "dbi_connection_data_source_key" at line 94.
at line 35.
SQL state: XX000It looks like you're trying to connect the same data_source and
user_name twice. Check whether the existing one works :)Are the documents unclear on the idea that you only run
make_accessor_functions() once per remote (data_source,user_name)
pair per local database?Cheers,
David.
On Tue, Oct 30, 2007 at 01:12:41PM +0100, Pit M. wrote:
Hi David!
Thanks for the fast reply. So you mean that I might already have
created a connection but am still trying to create the same one
again?
Yes.
Check whether the existing one works :)
So how can I test it?
Fire up psql and do:
SELECT
data_source_id,
local_schema,
data_source
FROM
dbi_link.dbi_conection;
This gives you schemas you have created successfully. You can then
check what's in schema foo by doing:
\dv foo.*
What is the correct way of accessing this data source in a select
statement?Concerning the documents, I wouldn't say that they are unclear about
make_accessor_functions(). The problem is, that in the dbi-link
documents (quote: "Do the following, with the appropriate
parameters. "Appropriate parameters" come from the perldoc of the
appropriate DBD...") and in the dbi-odbc documents I can't find any
information about the correct use of the parameters for the
ODBC-connection. That's why I tried to create the connection so many
times.
Ah, I see. I don't have an example of dbd-odbc just yet, but you
should be able to write a very short perl program which connects to
your data source.
http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_1.html
Once you've verified that that's working, you can set up a new
connection. The parameters you pass into $dbh coincide, not
coincidentally, with the first inputs to make_accessor_functions :)
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate
Hi David,
I'm sorry to bother you again, but I still couldn't get it to work. Like
you suggested, I checked for successfully installed schemas. There was
one, which I deleted again because I don't know which of my countless
tries to create it was the successful one. I think the following code
should be alright, however when executing it, I receive the following
error message:
"ERROR: error from Perl function: error from Perl function:
DBD::ODBC::db column_info failed: [Microsoft][ODBC SQL Server Driver]Die
Verbindung ist mit Ergebnissen von einem anderen hstmt belegt
(SQL-HY000)(DBD: odbc_columns/SQLColumns err=-1) at line 66. at line 53.
SQL state: XX000"
"Die Verbindung ist mit Ergebnissen von einem anderen hstmt belegt" is
German and means "The connection is occupied/reserved with results from
another hstmt". I'm desperately trying to solve it, but have no idea
where to start.
SELECT dbi_link.make_accessor_functions(
'dbi:ODBC:test'::dbi_link.data_source,
'sa'::text,
''::text,
'---
AutoCommit: 1
RaiseError: 1
'::dbi_link.yaml,
NULL::dbi_link.yaml,
NULL::text,
NULL::text,
'test'::text
);
Hope you can help me one more time. Thanks.
Regards,
Pit
Show quoted text
On Tue, Oct 30, 2007 at 01:12:41PM +0100, Pit M. wrote:
Hi David!
Thanks for the fast reply. So you mean that I might already have
created a connection but am still trying to create the same one
again?Yes.
Check whether the existing one works :)
So how can I test it?
Fire up psql and do:
SELECT
data_source_id,
local_schema,
data_source
FROM
dbi_link.dbi_conection;This gives you schemas you have created successfully. You can then
check what's in schema foo by doing:\dv foo.*
What is the correct way of accessing this data source in a select
statement?Concerning the documents, I wouldn't say that they are unclear about
make_accessor_functions(). The problem is, that in the dbi-link
documents (quote: "Do the following, with the appropriate
parameters. "Appropriate parameters" come from the perldoc of the
appropriate DBD...") and in the dbi-odbc documents I can't find any
information about the correct use of the parameters for the
ODBC-connection. That's why I tried to create the connection so many
times.Ah, I see. I don't have an example of dbd-odbc just yet, but you
should be able to write a very short perl program which connects to
your data source.http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_1.html
Once you've verified that that's working, you can set up a new
connection. The parameters you pass into $dbh coincide, not
coincidentally, with the first inputs to make_accessor_functions :)Cheers,
David.
On Mon, Nov 05, 2007 at 05:02:03PM +0100, Pit M. wrote:
Hi David,
I'm sorry to bother you again, but I still couldn't get it to work.
Like you suggested, I checked for successfully installed schemas.
There was one, which I deleted again because I don't know which of
my countless tries to create it was the successful one.
Any one that got created successfully in a transaction is the
successful one.
Please start over by doing the following from within psql.
BEGIN;
DROP SCHEMA test CASCADE;
DROP SCHEMA dbi_link CASCADE;
\i dbi_link.sql
COMMIT;
If you see COMMIT after that, you have successfully loaded the
DBI-Link software into that database. If you don't, let me know what
you did get.
After that, do the following, editing the file and repeating until you
get a COMMIT at the end.
BEGIN;
\i test.sql
COMMIT;
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate