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
Post a Comment