У меня есть API restful, разработанный в Laravel 6.X. Я хочу вызвать процедуру AS400, чтобы вернуть данные в json процедуры.
я попытался использовать проект github cooperl22 / laravel -db2 , но это не сработало, или я не сделал этого не знаю, что нужно сделать, чтобы заставить его работать.
Я изменяю config / database. php с помощью:
'ibmi' => [
'driver' => 'db2_ibmi_odbc',
// or 'db2_ibmi_ibm' / 'db2_zos_odbc' / 'db2_expressc_odbc
'driverName' => '{IBM i Access ODBC Driver}',
// or '{iSeries Access ODBC Driver}' / '{IBM i Access ODBC Driver 64-bit}'
'host' => 'SERVER',
'username' => 'USER',
'password' => 'PASS',
'database' => '',
'prefix' => '',
'schema' => 'default schema',
'port' => 50000,
'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' => 3,
'SSL' => 0,
'CommitMode' => 2,
'ConnectionType' => 0,
'DefaultLibraries' => '',
'Naming' => 0,
'UNICODESQL' => 0,
'DateFormat' => 5,
'DateSeperator' => 0,
'Decimal' => 0,
'TimeFormat' => 0,
'TimeSeparator' => 0,
'TimestampFormat' => 0,
'ConvertDateTimeToChar' => 0,
'BLOCKFETCH' => 1,
'BlockSizeKB' => 32,
'AllowDataCompression' => 1,
'CONCURRENCY' => 0,
'LAZYCLOSE' => 0,
'MaxFieldLength' => 15360,
'PREFETCH' => 0,
'QUERYTIMEOUT' => 1,
'DefaultPkgLibrary' => 'QGPL',
'DefaultPackage' => 'A /DEFAULT(IBM),2,0,1,0',
'ExtendedDynamic' => 0,
'QAQQINILibrary' => '',
'SQDIAGCODE' => '',
'LANGUAGEID' => 'ENU',
'SORTTABLE' => '',
'SortSequence' => 0,
'SORTWEIGHT' => 0,
'AllowUnsupportedChar' => 0,
'CCSID' => 819,
'GRAPHIC' => 0,
'ForceTranslation' => 0,
'ALLOWPROCCALLS' => 0,
'DB2SQLSTATES' => 0,
'DEBUG' => 0,
'TRUEAUTOCOMMIT' => 0,
'CATALOGOPTIONS' => 3,
'LibraryView' => 0,
'ODBCRemarks' => 0,
'SEARCHPATTERN' => 1,
'TranslationDLL' => '',
'TranslationOption' => 0,
'MAXTRACESIZE' => 0,
'MultipleTraceFiles' => 1,
'TRACE' => 0,
'TRACEFILENAME' => '',
'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 => '', */
]
],
, чтобы проверить, сработало ли это, я создал контроллер, как в этом примере:
<?php
namespace App\Http\Controllers;
use TS;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TestController extends Controller
{
public function test(Request $request)
{
$test = DB::select('call GQPMOD.IPDC200(?,?,?,?)',array("001","001", "20200122","ZGZCAR1"));
return $test;
}
}
Когда я пробую этот метод с почтальоном, этот ответ с HTTP 500 и
InvalidArgumentException: Unsupported driver [db2_ibmi_odbc] in file C:\Desarrollo\GIT\_Personal\laravel-connect-as400-test\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php on line 285
Что я должен сделать, чтобы он работал?
Знаете ли вы какой-либо другой способ подключения к хранимой процедуре aS400?
Спасибо за помощь.