J'ai mis en place une connexion à une base de données Sybase via unixODBC et FreeTDS sur un serveur CentOS. (Je ne possède pas le serveur Sybase et j'ai juste un compte avec des autorisations en lecture seule)odbc_pconnect fonctionne mais PDO donne une erreur
TL; DR: je peux connecter à la fois avec odbc_pconnect
et AOP mais quand j'exécute la même requête odbc_pconnect
œuvres alors que les rendements AOP une erreur
histoire complète: j'ai créé un test simple en utilisant odbc_pconnect
$query = "select COUNT(*) from table_name";
$conn = odbc_pconnect("myDSN", 'myusername', 'mypassword');
if(!$conn)
die("Connection failed");
if($result = odbc_exec($conn, $query))
{
odbc_result_all($result);
}
le code ci-dessus fonctionne et j'obtenir le nombre que je veux.
J'essayé d'utiliser 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());
La connexion est estabilished (pas de « connexion a échoué » erreur), mais le serveur renvoie une erreur:
bien[FreeTDS][SQL Server]ASA Error -121: Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement (SQLExecute[262] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_stmt.c:254)
, comme vous pouvez voir mon la requête ne tente pas de créer une procédure
J'ai essayé différentes chaînes de connexion mais le résultat ne change pas
Je suppose que le problème est dans ma configuration odbc et freeTDS, plutôt que dans PHP. Mais la question demeure: pourquoi différents comportements?
modifier J'ai trouvé le même problème en essayant d'accéder à la source de données du consolle: si j'essaie avec tsql
tsql -S myDSN -U myusername -P mypassword
Je peux exécuter la requête. Mais quand j'accès à l'aide isql
:
isql -v myDSN myusername mypassword
je reçois la même erreur que aobove:
[42501][FreeTDS][SQL Server]ASA Error -121: Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement [ISQL]ERROR: Could not SQLExecute
Je suppose qu'elle est liée à this
PS J'utilise CakePHP 3.1.11
Non, je ne sais pas d'où il vient – arilia
pourrait être à [ce] (http://infocenter.sybase.com/help/ index.jsp? topic =/com.sybase.infocenter.dc35570.1550/html/clcprgde/clcprgde194.htm)? – arilia
Pouvez-vous partager cette valeur '$ query'? – itzmukeshy7