PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib. Connection to Snowflake in php is not working but isql connection is
PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib. Connection to Snowflake in php is not working but isql connection is
我可以使用 isql 连接并查询我的雪花服务器,但是当我尝试使用 php odbc_connect 这样做时,出现以下错误。
PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib '/var/www/html/odbc_test/snowflake/snowflake_odbc/lib/libSnowflake.so' : file not found, SQL state 01000 in SQLConnect in /var/www/html/test/snowflake.php on line 29
我以前从未设置过 odbc 连接,并遵循了此处提供的雪花指南 https://docs.snowflake.com/en/user-guide/odbc-linux.html。
出现错误后我尝试的第一件事是设置 /var/www/html/odbc_test/snowflake/snowflake_odbc/lib/libSnowflake 的权限。所以没有用,所以我设置为 777,仍然没有用。
这是 php 代码。
<?php
//values checked with https://docs.snowflake.com/en/user-guide/odbc-parameters.html
$SNOWFLAKE_HOST = 'snowflakecomputing.com';
$SNOWFLAKE_ACCOUNT = 'xxxx;
$SNOWFLAKE_PORT = '443';
$SNOWFLAKE_SCHEMA = 'xxxx';
$SNOWFLAKE_WAREHOUSE = 'xxxx';
$SNOWFLAKE_DATABASE = 'xxxx';
$SNOWFLAKE_USER = 'xxxx';
$SNOWFLAKE_PASSWORD = 'xxxx';
$dsn = "Driver=SnowflakeDSIIDriver;Server=" . $SNOWFLAKE_HOST;
$dsn .= ";Account=" . $SNOWFLAKE_ACCOUNT;
$dsn .= ";Port=" . $SNOWFLAKE_PORT;
$dsn .= ";Schema=" . $SNOWFLAKE_SCHEMA;
$dsn .= ";Warehouse=" . $SNOWFLAKE_WAREHOUSE;
$dsn .= ";Database=" . $SNOWFLAKE_DATABASE;
$conn_id = odbc_connect($dsn, $SNOWFLAKE_USER, $SNOWFLAKE_PASSWORD);
odbc_exec($conn_id, "USE WAREHOUSE " . $SNOWFLAKE_WAREHOUSE);
$res = odbc_exec($conn_id, 'SHOW TABLES IN SCHEMA ' . $SNOWFLAKE_SCHEMA . ';');
if ($res) {
print "Tables in schema\n";
while($row = odbc_fetch_array($res)) {
print_r($row);
}
}
$res = odbc_exec($conn_id, 'SELECT * FROM TEST;');
if ($res) {
print "Test table content\n";
while($row = odbc_fetch_array($res)) {
print_r($row);
}
}
我还通过将 snowflake_odbc 中所有目录的权限更改为 777 来解决此问题。
我可以使用 isql 连接并查询我的雪花服务器,但是当我尝试使用 php odbc_connect 这样做时,出现以下错误。
PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib '/var/www/html/odbc_test/snowflake/snowflake_odbc/lib/libSnowflake.so' : file not found, SQL state 01000 in SQLConnect in /var/www/html/test/snowflake.php on line 29
我以前从未设置过 odbc 连接,并遵循了此处提供的雪花指南 https://docs.snowflake.com/en/user-guide/odbc-linux.html。
出现错误后我尝试的第一件事是设置 /var/www/html/odbc_test/snowflake/snowflake_odbc/lib/libSnowflake 的权限。所以没有用,所以我设置为 777,仍然没有用。
这是 php 代码。
<?php
//values checked with https://docs.snowflake.com/en/user-guide/odbc-parameters.html
$SNOWFLAKE_HOST = 'snowflakecomputing.com';
$SNOWFLAKE_ACCOUNT = 'xxxx;
$SNOWFLAKE_PORT = '443';
$SNOWFLAKE_SCHEMA = 'xxxx';
$SNOWFLAKE_WAREHOUSE = 'xxxx';
$SNOWFLAKE_DATABASE = 'xxxx';
$SNOWFLAKE_USER = 'xxxx';
$SNOWFLAKE_PASSWORD = 'xxxx';
$dsn = "Driver=SnowflakeDSIIDriver;Server=" . $SNOWFLAKE_HOST;
$dsn .= ";Account=" . $SNOWFLAKE_ACCOUNT;
$dsn .= ";Port=" . $SNOWFLAKE_PORT;
$dsn .= ";Schema=" . $SNOWFLAKE_SCHEMA;
$dsn .= ";Warehouse=" . $SNOWFLAKE_WAREHOUSE;
$dsn .= ";Database=" . $SNOWFLAKE_DATABASE;
$conn_id = odbc_connect($dsn, $SNOWFLAKE_USER, $SNOWFLAKE_PASSWORD);
odbc_exec($conn_id, "USE WAREHOUSE " . $SNOWFLAKE_WAREHOUSE);
$res = odbc_exec($conn_id, 'SHOW TABLES IN SCHEMA ' . $SNOWFLAKE_SCHEMA . ';');
if ($res) {
print "Tables in schema\n";
while($row = odbc_fetch_array($res)) {
print_r($row);
}
}
$res = odbc_exec($conn_id, 'SELECT * FROM TEST;');
if ($res) {
print "Test table content\n";
while($row = odbc_fetch_array($res)) {
print_r($row);
}
}
我还通过将 snowflake_odbc 中所有目录的权限更改为 777 来解决此问题。