cooperl22 / laravel-db2

laravel-db2 is a simple DB2 service provider for Laravel. It provides DB2 Connection by extending the Illuminate Database component of the laravel framework.
Other
59 stars 64 forks source link

Drivers issue #56

Closed RiccardoFrancescato closed 4 years ago

RiccardoFrancescato commented 5 years ago

This is not a code issue, i have problems installing drivers and php extensions. I have a Centos 7 machine with php 7 and apache running. I have installed ibm_db2 driver and extension through ibm_data_server_driver_package_linuxx64_v11.5.tar.gz and I series client access through iSeriesAccess-7.1.0-1.0.x86_64.rpm. using the following commands:

sudo yum install libiodbc
sudo yum install unixODBC.x86_64
sudo yum install unixODBC-devel.x86_64
cd /usr/lib64
sudo ln libodbcinst.so.2 libodbcinst.so.1
sudo ln libodbc.so.2 libodbc.so.1
sudo rpm -ivh iSeriesAccess-7.1.0-1.0.x86_64.rpm --nodeps

I have added ibm_db2 extension to the php ini

and setted my laravel connection as follow:

'stealth' => [
            'driver'        => env('STEALTH_DB_DRIVER', 'db2_ibmi_ibm'), // or 'db2_ibmi_ibm' / 'db2_zos_odbc' / 'db2_expressc_odbc
            'driverName'    => env('STEALTH_DB_DRIVERNAME', '{iSeries Access ODBC Driver}'), // or '{iSeries Access ODBC Driver}' / '{IBM i Access ODBC Driver 64-bit}'
            'host'          => env('STEALTH_DB_HOST', ''),
            'username'      => env('STEALTH_DB_USERNAME', ''),
            'password'      => env('STEALTH_DB_PASSWORD', ''),
            'database'      => env('STEALTH_DB_DATABASE', ''),
            'prefix'        => env('STEALTH_DB_PREFIX', ''),
            'schema'        => env('STEALTH_DB_SCHEMA', ''),
            'port'          => env('STEALTH_DB_PORT', 50000),
            'date_format'   => env('STEALTH_DB_DATE_FORMAT', 'Y-m-d H:i:s'), // or 'Y-m-d H:i:s.u' / 'Y-m-d-H.i.s.u'...
            'odbc_keywords' => [
                'SIGNON'                => env('STEALTH_DB_SIGNON', 3),
                'SSL'                   => env('STEALTH_DB_SSL', 0),
                'CommitMode'            => env('STEALTH_DB_COMMITMODE', 2),
                'ConnectionType'        => env('STEALTH_DB_CONNECTIONTYPE', 0),
                'DefaultLibraries'      => env('STEALTH_DB_DEFAULTLIBRARIES', ''),
                'Naming'                => env('STEALTH_DB_NAMING', 0),
                'UNICODESQL'            => env('STEALTH_DB_UNICODESQL', 0),
                'DateFormat'            => env('STEALTH_DB_DATEFORMAT', 5),
                'DateSeperator'         => env('STEALTH_DB_DATESEPERATOR', 0),
                'Decimal'               => env('STEALTH_DB_DECIMAL', 0),
                'TimeFormat'            => env('STEALTH_DB_TIMEFORMAT', 0),
                'TimeSeparator'         => env('STEALTH_DB_TIMESEPARATOR', 0),
                'TimestampFormat'       => env('STEALTH_DB_TIMESTAMPFORMAT', 0),
                'ConvertDateTimeToChar' => env('STEALTH_DB_CONVERTDATETIMETOCHAR', 0),
                'BLOCKFETCH'            => env('STEALTH_DB_BLOCKFETCH', 1),
                'BlockSizeKB'           => env('STEALTH_DB_BLOCKSIZEKB', 32),
                'AllowDataCompression'  => env('STEALTH_DB_ALLOWDATACOMPRESSION', 1),
                'CONCURRENCY'           => env('STEALTH_DB_CONCURRENCY', 0),
                'LAZYCLOSE'             => env('STEALTH_DB_LAZYCLOSE', 0),
                'MaxFieldLength'        => env('STEALTH_DB_MAXFIELDLENGTH', 15360),
                'PREFETCH'              => env('STEALTH_DB_PREFETCH', 0),
                'QUERYTIMEOUT'          => env('STEALTH_DB_QUERYTIMEOUT', 1),1,
                'DefaultPkgLibrary'     => env('STEALTH_DB_DEFAULTPKGLIBRARY', 'QGPL'),
                'DefaultPackage'        => env('STEALTH_DB_DEFAULTPACKAGE', 'A /DEFAULT(IBM),2,1,0'),
                'ExtendedDynamic'       => env('STEALTH_DB_EXTENDEDDYNAMIC', 0),
                'QAQQINILibrary'        => env('STEALTH_DB_QAQQINILIBRARY', ''),
                'SQDIAGCODE'            => env('STEALTH_DB_SQDIAGCODE', ''),
                'LANGUAGEID'            => env('STEALTH_DB_LANGUAGEID', 'ENU'),
                'SORTTABLE'             => env('STEALTH_DB_SORTTABLE', ''),
                'SortSequence'          => env('STEALTH_DB_SORTSEQUENCE', 0),
                'SORTWEIGHT'            => env('STEALTH_DB_SORTWEIGHT', 0),
                'AllowUnsupportedChar'  => env('STEALTH_DB_ALLOWUNSUPPORTEDCHAR', 0),
                'CCSID'                 => env('STEALTH_DB_CCSID', 819),819,
                'GRAPHIC'               => env('STEALTH_DB_GRAPHIC', 0),
                'ForceTranslation'      => env('STEALTH_DB_FORCETRANSLATION', 0),
                'ALLOWPROCCALLS'        => env('STEALTH_DB_ALLOWPROCCALLS', 0),
                'DB2SQLSTATES'          => env('STEALTH_DB_DB2SQLSTATES', 0),
                'DEBUG'                 => env('STEALTH_DB_DEBUG', 0),
                'TRUEAUTOCOMMIT'        => env('STEALTH_DB_TRUEAUTOCOMMIT', 0),
                'CATALOGOPTIONS'        => env('STEALTH_DB_CATALOGOPTIONS', 3),
                'LibraryView'           => env('STEALTH_DB_LIBRARYVIEW', 0),
                'ODBCRemarks'           => env('STEALTH_DB_ODBCREMARKS', 0),
                'SEARCHPATTERN'         => env('STEALTH_DB_SEARCHPATTERN', 1),
                'TranslationDLL'        => env('STEALTH_DB_TRANSLATIONDLL', ''),
                'TranslationOption'     => env('STEALTH_DB_TRANSLATIONOPTION', 0),
                'MAXTRACESIZE'          => env('STEALTH_DB_MAXTRACESIZE', 0),
                'MultipleTraceFiles'    => env('STEALTH_DB_MULTIPLETRACEFILES', 1),
                'TRACE'                 => env('STEALTH_DB_TRACE', 0),
                'TRACEFILENAME'         => env('STEALTH_DB_TRACEFILENAME', ''),
                'ExtendedColInfo'       => env('STEALTH_DB_EXTENDEDCOLINFO', 0),
            ],
            'options' => [
                PDO::ATTR_CASE => PDO::CASE_LOWER,
                PDO::ATTR_PERSISTENT => false,
                //PDO::I5_ATTR_DBC_SYS_NAMING => false,
                //PDO::I5_ATTR_COMMIT => PDO::I5_TXN_NO_COMMIT,
                //PDO::I5_ATTR_JOB_SORT => false,
                //PDO::I5_ATTR_DBC_LIBL => '',
                //PDO::I5_ATTR_DBC_CURLIB => '',
            ]
        ],

But when i try to connect to the database, laravel returns

PDOException
could not find driver

Can someone help me figuring out what i'm doing wrong and let the connection working? Thanks in advance.

wstaples commented 5 years ago

I believe iSeriesAccess-7.1.0-1.0.x86_64.rpm is for the ODBC drivers. If that's what you want, you probably need the PHP ODBC extension installed as well. in ubuntu I would use sudo apt install php7.x-odbc. You could try the same in yum but the package name might be different.

RiccardoFrancescato commented 4 years ago

I finally found the solution to install IBM ODBC drivers on linux machine. I share with you the solution i've found.

yum install ibm-iaccess-1.1.0.12-1.0.x86_64.rpm
cd /usr/lib64/
ln -s libodbcinst.so.2 /usr/lib64/libodbcinst.so.1
odbc_config --odbcinstini
vi /etc/odbcinst.ini
----- Content of odbcinst.ini ----
[ODBC]
Trace = No
Pooling = No 

[IBM i Access ODBC Driver]
Description=IBM i Access for Linux ODBC Driver
Driver=/opt/ibm/iaccess/lib/libcwbodbc.so
Setup=/opt/ibm/iaccess/lib/libcwbodbcs.so
Driver64=/opt/ibm/iaccess/lib64/libcwbodbc.so
Setup64=/opt/ibm/iaccess/lib64/libcwbodbcs.so
Threading=0
DontDLClose=1
UsageCount=1

[IBM i Access ODBC Driver 64-bit]
Description=IBM i Access for Linux 64-bit ODBC Driver
Driver=/opt/ibm/iaccess/lib64/libcwbodbc.so
Setup=/opt/ibm/iaccess/lib64/libcwbodbcs.so
Threading=0
DontDLClose=1
UsageCount=1
-----

vi /etc/odbc.ini
----- Content of odbc.ini ----
[STEALTH]
Description = IBM i Access ODBC driver
Driver = IBM i Access ODBC driver
System =
UserID =
Password =
Naming = 0
-----