php - odbc_pconnect works but PDO gives error -


i set connection sybase db through unixodbc , freetds on centos server. (i don't own sybase server , have account read permissions)

tl;dr: can connect both odbc_pconnect , pdo when execute same query odbc_pconnect works while pdo returns error

full story: created simple test using odbc_pconnect

$query = "select count(*) table_name";  $conn = odbc_pconnect("mydsn", 'myusername', 'mypassword');  if(!$conn)      die("connection failed"); if($result = odbc_exec($conn, $query))  {     odbc_result_all($result); } 

the above code works , obtain count want.

then tried using pdo

$connectionstring = "odbc:mydsn;"; try {     $db = new \pdo(     $connectionstring , 'myusername', 'mypassword'); } catch (pdoexception $e)  {     echo 'connection failed: ' . $e->getmessage(); } $rs = $db->query($query); debug($db->errorinfo()); 

the connection estabilished (no "connection failed" error) server returns error:

[freetds][sql server]asa error -121: permission denied: not have permission use "create procedure" statement (sqlexecute[262] @ /builddir/build/build/php-5.4.16/ext/pdo_odbc/odbc_stmt.c:254)

well, can see query not attempt create procedure

i tried different connection strings result not change

i guess problem in odbc , freetds configuration, rather in php. still question remains: why different behaviors?

edit found same issue trying access datasource consolle: if try tsql

tsql -s mydsn -u myusername -p mypassword 

i can execute query. when access using isql:

isql -v mydsn myusername mypassword  

i same error aobove:

[42501][freetds][sql server]asa error -121: permission denied: not have permission use "create procedure" statement [isql]error: not sqlexecute

i guess related this

ps i'm using cakephp 3.1.11

you may not create procedures, cakephp may in background you. if have read privileges cannot create procedures, source:

the following describes permission checks create procedure (also when creating extended procedure) differ based on granular permissions settings.:

granular permissions enabled - must have create procedure privilege. must have create procedure privilege run create procedure other users.

granular permissions disabled - must database owner or have create procedure privilege.


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -