Обсуждение: Case-sensitivity of connection string parameters

Поиск
Список
Период
Сортировка

Case-sensitivity of connection string parameters

От
Mateusz Loskot
Дата:
Hi,

I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
Should I expect names of connection string parameters to be case-sensitive?

For instance, if I try DSN-less connection with the following connection
string passed to the ODBC API call SQLDriverConnect:

"Driver={PostgreSQL ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"

I get this error:

[unixODBC][Driver Manager]Data source name not found, and no default
driver specified

whereas if I try this one, with the upper-case DRIVER:

"DRIVER={PostgreSQL ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"

I get successfully connected.

I've couldn't find any details on the case sensitivity in the FAQ,
release notes or https://odbc.postgresql.org/docs/config-opt.html

The only cue might be the connection string in the VB example
at the bottom of this page, where DRIVER is specified in upper-case:
https://odbc.postgresql.org/docs/config.html

Another cue that suggests case-sensitivity might be important is from
the connection strings database:
https://www.connectionstrings.com/postgresql-odbc-driver-psqlodbc/
and it says:
"Please note that sslmode=require is case sensitive, it should be
written in lower case letters."

But, it is confusing since the https://odbc.postgresql.org/docs/config-opt.html
lists this parameter as "SSLmode", but not asd "sslmode".

Finally, I have tried psqlODBC 9.3.4 on Windows and there parameters work
regardless of their case.

Could anyone explain what case of each of the parameters is required useon Unix?

Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net


Re: Case-sensitivity of connection string parameters

От
"Inoue, Hiroshi"
Дата:

On 2016/05/10 16:56, Mateusz Loskot wrote:
> Hi,
>
> I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
> Should I expect names of connection string parameters to be case-sensitive?
>
> For instance, if I try DSN-less connection with the following connection
> string passed to the ODBC API call SQLDriverConnect:
>
> "Driver={PostgreSQL ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>
> I get this error:
>
> [unixODBC][Driver Manager]Data source name not found, and no default
> driver specified

What rejects the connection is unixODBC driver manager not psqlodbc driver.
Newer version of unixODBC may allow "Driver=....".

>
> whereas if I try this one, with the upper-case DRIVER:
>
> "DRIVER={PostgreSQL ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>
> I get successfully connected.
>
> I've couldn't find any details on the case sensitivity in the FAQ,
> release notes or https://odbc.postgresql.org/docs/config-opt.html
>
> The only cue might be the connection string in the VB example
> at the bottom of this page, where DRIVER is specified in upper-case:
> https://odbc.postgresql.org/docs/config.html
>
> Another cue that suggests case-sensitivity might be important is from
> the connection strings database:
> https://www.connectionstrings.com/postgresql-odbc-driver-psqlodbc/
> and it says:
> "Please note that sslmode=require is case sensitive, it should be
> written in lower case letters."
>
> But, it is confusing since the https://odbc.postgresql.org/docs/config-opt.html
> lists this parameter as "SSLmode", but not asd "sslmode".
>
> Finally, I have tried psqlODBC 9.3.4 on Windows and there parameters work
> regardless of their case.

The keywords of connection string are case-insensitive but the values
might be case-sensitive.

regards,
Hiroshi Inoue


Re: Case-sensitivity of connection string parameters

От
Mateusz Loskot
Дата:
On 10 May 2016 at 15:26, Inoue, Hiroshi <h-inoue@dream.email.ne.jp> wrote:
> On 2016/05/10 16:56, Mateusz Loskot wrote:
>>
>> I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
>> Should I expect names of connection string parameters to be
>> case-sensitive?
>>
>> For instance, if I try DSN-less connection with the following connection
>> string passed to the ODBC API call SQLDriverConnect:
>>
>> "Driver={PostgreSQL
>> ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>>
>> I get this error:
>>
>> [unixODBC][Driver Manager]Data source name not found, and no default
>> driver specified
>
>
> What rejects the connection is unixODBC driver manager not psqlodbc driver.
> Newer version of unixODBC may allow "Driver=....".

I see, though, confusingly, in the same environment unixODBC
accepts  "Driver=" for MySQL connection.
That is why I suspected psqlODBC.

Regards,
--
Mateusz Loskot, http://mateusz.loskot.net


Re: Case-sensitivity of connection string parameters

От
Adrian Klaver
Дата:
On 05/10/2016 06:52 AM, Mateusz Loskot wrote:
> On 10 May 2016 at 15:26, Inoue, Hiroshi <h-inoue@dream.email.ne.jp> wrote:
>> On 2016/05/10 16:56, Mateusz Loskot wrote:
>>>
>>> I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
>>> Should I expect names of connection string parameters to be
>>> case-sensitive?
>>>
>>> For instance, if I try DSN-less connection with the following connection
>>> string passed to the ODBC API call SQLDriverConnect:
>>>
>>> "Driver={PostgreSQL
>>> ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>>>
>>> I get this error:
>>>
>>> [unixODBC][Driver Manager]Data source name not found, and no default
>>> driver specified
>>
>>
>> What rejects the connection is unixODBC driver manager not psqlodbc driver.
>> Newer version of unixODBC may allow "Driver=....".
>
> I see, though, confusingly, in the same environment unixODBC
> accepts  "Driver=" for MySQL connection.
> That is why I suspected psqlODBC.

So what does the MySQL connection look like in its entirety?

Also what are the *.ini file entries for the respective drivers?

>
> Regards,
>


--
Adrian Klaver
adrian.klaver@aklaver.com


Re: Case-sensitivity of connection string parameters

От
Nick Gorham
Дата:
On 10/05/16 15:40, Adrian Klaver wrote:
> On 05/10/2016 06:52 AM, Mateusz Loskot wrote:
>> On 10 May 2016 at 15:26, Inoue, Hiroshi <h-inoue@dream.email.ne.jp>
>> wrote:
>>> On 2016/05/10 16:56, Mateusz Loskot wrote:
>>>>
>>>> I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
>>>> Should I expect names of connection string parameters to be
>>>> case-sensitive?
>>>>
>>>> For instance, if I try DSN-less connection with the following
>>>> connection
>>>> string passed to the ODBC API call SQLDriverConnect:
>>>>
>>>> "Driver={PostgreSQL
>>>> ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>>>>
>>>> I get this error:
>>>>
>>>> [unixODBC][Driver Manager]Data source name not found, and no default
>>>> driver specified
>>>
>>>
>>> What rejects the connection is unixODBC driver manager not psqlodbc
>>> driver.
>>> Newer version of unixODBC may allow "Driver=....".
>>
>> I see, though, confusingly, in the same environment unixODBC
>> accepts  "Driver=" for MySQL connection.
>> That is why I suspected psqlODBC.
>
> So what does the MySQL connection look like in its entirety?
>
> Also what are the *.ini file entries for the respective drivers?

 From the current unixODBC change log

26th-November-2011
2.3.1

     * The keyword matching for DRIVER=, DSN= etc was case sensitive.
Make it insensitive now

--
Nick


Re: Case-sensitivity of connection string parameters

От
Mateusz Loskot
Дата:
On 10 May 2016 at 16:40, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
> On 05/10/2016 06:52 AM, Mateusz Loskot wrote:
>>
>> On 10 May 2016 at 15:26, Inoue, Hiroshi <h-inoue@dream.email.ne.jp> wrote:
>>>
>>> On 2016/05/10 16:56, Mateusz Loskot wrote:
>>>>
>>>>
>>>> I use the psqlODBC 9.2.1 with unixODBC 2.2.14 on Ubuntu 14.04.
>>>> Should I expect names of connection string parameters to be
>>>> case-sensitive?
>>>>
>>>> For instance, if I try DSN-less connection with the following connection
>>>> string passed to the ODBC API call SQLDriverConnect:
>>>>
>>>> "Driver={PostgreSQL
>>>> ANSI};Server=127.0.0.1;Database=test;UID=test;PWD=test;"
>>>>
>>>> I get this error:
>>>>
>>>> [unixODBC][Driver Manager]Data source name not found, and no default
>>>> driver specified
>>>
>>>
>>>
>>> What rejects the connection is unixODBC driver manager not psqlodbc
>>> driver.
>>> Newer version of unixODBC may allow "Driver=....".
>>
>>
>> I see, though, confusingly, in the same environment unixODBC
>> accepts  "Driver=" for MySQL connection.
>> That is why I suspected psqlODBC.
>
>
> So what does the MySQL connection look like in its entirety?

Driver=MySQL;Server=localhost;Database=nanodbc_tests;User=root;Password=;Option=3;


Sample Travis CI build job where this MySQL connection string is
successfully used:
https://travis-ci.org/lexicalunit/nanodbc/jobs/128260733

Sample job where PostgreSQL connection string with capitalised Driver=
is failing:
https://travis-ci.org/lexicalunit/nanodbc/jobs/128260734

and PostgreSQL job worked after changing to DRIVER=
https://travis-ci.org/lexicalunit/nanodbc/jobs/129121683

> Also what are the *.ini file entries for the respective drivers?

All .ini files are left as installed by Ubuntu 14.04 packages

$ cat /etc/odbc.ini

$ cat /etc/odbcinst.ini

[SQLite]
Description = SQLite ODBC Driver
Driver = /usr/lib/odbc/libsqliteodbc.so
Setup = /usr/lib/odbc/libsqliteodbc.so
UsageCount = 1

[SQLite3]
Description = SQLite3 ODBC Driver
Driver = /usr/lib/odbc/libsqlite3odbc.so
Setup = /usr/lib/odbc/libsqlite3odbc.so
UsageCount = 1

[PostgreSQL ANSI]
Description = PostgreSQL ODBC driver (ANSI version)
Driver = psqlodbca.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 2

[PostgreSQL Unicode]
Description = PostgreSQL ODBC driver (Unicode version)
Driver = psqlodbcw.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 2


Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net