Я пытаюсь подключиться к базе данных IBM AS/400 DB2 клиента с сервера Ubuntu с помощью драйвера ODBC PHP. У меня установлен unixODBC. Мои odbcinst.ini выглядит следующим образом:Подключение к базе данных DB2 IBM AS/400
[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
И мой odbc.ini выглядит следующим образом:
[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
Теперь мой код, чтобы соединиться:
$server = '12.345.678.90' //IP
$port = '446' //PORT
$username = 'my_username';
$password = 'my_password';
$connect = odbc_connect("DRIVER = {IBM DB2 ODBC DRIVER};System=$server:$port;Uid=$username;Pwd=$password;", $username, $password);
if(!$connect)
echo 'Cannot Connect!';
else
echo 'Connected!';
Ошибка, которую я получаю, такова:
Warning: odbc_connect(): SQL Error: [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES), SQL state S1000 in SQLConnect
Я также попытался использовать драйвер PDO ODBC. Это ошибка, которую я получаю:
$connect = new PDO("odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=$server;PORT=$port;Uid=$username;Pwd=$password");
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] SQLDriverConnect: 1045 [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES)' in /var/www/test_file.php Stack trace: #0 /var/www/test_file.php: PDO->__construct('odbc:DRIVER={IB...') #1 {main} thrown in /var/www/test_file.php
Я делаю что-то неправильно здесь? Нужно ли использовать какой-либо другой драйвер, потому что имя пользователя и пароль верны, я видел, как клиент заходил в базу данных, используя имя пользователя и пароль, которые у меня есть. Я думал, что имя пользователя и пароль неверны, потому что он говорит Доступ запрещен для пользователя. Кажется, это не так. Возможно, что-то еще не так.
Благодарим за помощь. Надеюсь, я поставил проблему очень ясно. Благодаря!
Спасибо за ответ , Я установил ** iSeriesAccess-7.1.0-1.0x86_64.rpm **, потому что не смог установить ** i386 **. Позвольте мне попробовать с тем, что вы предоставили. Но я не могу установить для ** i386 ** architechture. Благодарю. Позвольте мне попробовать это и вернуться к вам. Большое спасибо! – sulavvr
Единственная разница между ** odbcinst.ini **, которую вы предоставили, и моей: ** Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so** ** Setup =/opt/ibm/iSeriesAccess/lib64/libcwbodc.so ** Все остальное было таким же. Я попытался подключиться с помощью PDO, но сообщение об ошибке, которое я получил, было то, что ** libcwbodbc.so ** не был найден. Есть идеи? Благодарю. – sulavvr
@flyingDuck - вам нужно убедиться, что в вашем файле 'odbcinst.ini' есть строки' Driver = xxx' и 'Setup = xxx', указывающие, где находится ваш ** libcwbodbc.so **. –