hyperf 3.0 暂时没有支持查询sql server的扩展,但是hyperf/database 衍生于 laravel的illuminate/database,可以根据他来修改hyperf/database ,(可以到我的主页资源中下载)这个是已经修改好可以直接拿来用的把以前的vendor/hyperf 下的database备份,然后将修改的文件替换掉框架的database就可以用了
在使用hyperf连接sql server数据库的时候出现一个报错[08001] [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的
//报错原文
[ERROR] SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate] (SQL: select * from [SysUser] where [CompanyId] = 13)[1082] in /data/www/vendor/hyperf/database/src/Connec
解决SSL报错 修改数据库配置文件 hyperf\config\autoload\databases.php
添加如下两项配置
'encrypt' => 'yes', // 解决证书报错
'trust_server_certificate' => 'true', // 解决证书报错
<?php
declare(strict_types=1);
/**
* This file is part of Hyperf.
*
* @link https://www.hyperf.io
* @document https://hyperf.wiki
* @contact group@hyperf.io
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
*/
return [
'default' => [
'driver' => env('DB_DRIVER', 'sqlsrv'),
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'hyperf'),
'port' => env('DB_PORT', 1433),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'encrypt' => 'yes', // 解决证书报错
'trust_server_certificate' => 'true', // 解决证书报错
'pool' => [
'min_connections' => 1,
'max_connections' => 10,
'connect_timeout' => 10.0,
'wait_timeout' => 3.0,
'heartbeat' => -1,
'max_idle_time' => (float) env('DB_MAX_IDLE_TIME', 60),
],
'commands' => [
'gen:model' => [
'path' => 'app/Model',
'force_casts' => true,
'inheritance' => 'Model',
],
],
],
];
// ...