[R-sig-DB] DBI preferred syntax

Paul Gilbert pg||bert902 @end|ng |rom gm@||@com
Fri Oct 17 15:49:06 CEST 2014


On 10/16/2014 08:12 PM, NISHIYAMA Tomoaki wrote:
> Hi,
>
>>> dbConnect(RPostgreSQL::PostgreSQL(), "test")   #fails
>> Error in postgresqlNewConnection(drv, ...) :
>>   RS-DBI driver: (could not connect test using local on dbname "test"
>> )
>>
>> I guess this must be something to do with the order of matching ...?
>
> On the manual of dbConnect(drv, ...) in
> http://cran.r-project.org/web/packages/DBI/DBI.pdf
> the argument ... is explained as
> 	authorization arguments needed by the DBMS instance;
> 	these typically include user, password, dbname, host, port, etc.
> 	For details see the appropriate DBIDriver.
>
> There is no implication that the first unnamed argument be dbname.
> Because no order is specified in the manual, the parameter name should
> be explicitly written always.

Yes, it is probably an accident that it worked for RSQLite and RMySQL.

Thanks,
Paul

>
 >-- Tomoaki NISHIYAMA Advanced Science Research Center, Kanazawa 
 >University, 13-1 Takara-machi, Kanazawa, 920-0934, Japan On 
2014/10/17, >at 3:35, Paul Gilbert wrote:
 >
 >
 > On 10/15/2014 11:46 AM, Hadley Wickham wrote:
 >> On Tue, Oct 14, 2014 at 5:22 PM, Paul Gilbert 
<pgilbert902 using gmail.com> wrote:
 >>> I reported earlier in this thread that this works:
 >>>
 >>> Type 'q()' to quit R.
 >>>> require("RPostgreSQL")
 >>> Loading required package: RPostgreSQL
 >>> Loading required package: DBI
 >>>> require("DBI")
 >>>> z <-dbConnect(RPostgreSQL::PostgreSQL(), dbname="test")   #works
 >>>
 >>> but there are some circumstance I have not isolated where if fails 
with the
 >>> same problem as this (which fails reliably):
 >>>
 >>> Type 'q()' to quit R.
 >>>> requireNamespace("RPostgreSQL")
 >>> Loading required namespace: RPostgreSQL
 >>>> require("DBI")
 >>> Loading required package: DBI
 >>>> z <- dbConnect(RPostgreSQL::PostgreSQL(), "test")
 >>> Error in postgresqlNewConnection(drv, ...) :
 >>>   RS-DBI driver: (could not connect test using local on dbname "test"
 >>> )
 >>>
 >>> For some reason, done this way it does not find my setting of 
environment
 >>> variable PGHOST, which is not localhost, and picks up test as my 
user name,
 >>> which is not correct.
 >>
 >> I suspect this is because RPostgreSQL needs some tweaks to work when
 >> it's not attached - it's possible it's using .onAttach instead of
 >> .onLoad for initialisation.
 >
 > No, it is using .onLoad and loading vs attaching does not seem to be 
the issue. I've isolated a bit better, it seems to need dbname 
indicated, which is not the case for RSQLite or RMySQL:
 >
 > dbConnect(RPostgreSQL::PostgreSQL(), dbname="test")   #works
 > dbConnect(RPostgreSQL::PostgreSQL(), "test")   #fails
 >
 >> dbConnect(RPostgreSQL::PostgreSQL(), dbname="test")   #works
 > <PostgreSQLConnection:(9341,5)>
 >> dbConnect(RPostgreSQL::PostgreSQL(), "test")   #fails
 > Error in postgresqlNewConnection(drv, ...) :
 >  RS-DBI driver: (could not connect test using local on dbname "test"
 > )
 >
 > I guess this must be something to do with the order of matching ...?
 >
 > Paul
 >
 >>
 >>
 >> Hadley
 >>




More information about the R-sig-DB mailing list