农科院-使用kingbase金仓数据库

2025-01-13 16:29:59 阅读:8 编辑

代码方面

public/framework/zhyphp/library/function/pdo.func.php(12行)-替换pdo函数

function pdo() {
    global $_W;
    static $db;
    $is_pgsql = true;
    if(empty($db)) {
//      if($_W['config']['db']['slave_status'] == true && !empty($_W['config']['db']['slave'])) {
//          load()->classs('slave.db');
//          $db = new SlaveDb('master');
//      } else {
        if($is_pgsql){
            require __DIR__."/../../../../../zhydb/ZhyDb.php";
            $db = new \zhydb\ZhyDb($_W['config']['db']["master"]);
        }else{
            require __DIR__."/../class/db.class.php";

            $db = new DB($_W['config']['db']);
        }
//      }
    }
    return $db;
}

public/addons/zhyshop_sun/thinkphp/library/think/db/Query.php(2229行)

 public function insert(array $data = [], $replace = false, $getLastInsID = false, $sequence = null)
    {
         $pk = $this->getPk();
        if(isset($data[$pk]) && empty($data[$pk])){
            unset($data[$pk]);
        }

public/addons/zhyshop_sun/thinkphp/library/think/db/Connection.php(862行)

    public function getLastInsID($sequence = null)
    {

        $res= $this->query("SELECT last_insert_id()");
        return $res;
    }

public/addons/zhyshop_sun/application/model/Plugin.php(560行)--注释以下代码

//慧牛供应链-3D名片是否有导入
       /* $goods = Goods::where("is_sclient_goods", 1)->where("sclient_goods_type", 0)->find();
        if ($goods) {
            (new Menu())->where('id', 'in', [2387])->update(['state' => 1]);
        } else {
            (new Menu())->where('id', 'in', [2387])->update(['state' => 0]);
        }*/

public/addons/zhyshop_sun/application/admin/controller/Base.php(1312行)

由于do的关键字与kingbase冲突,所以operatinglog直接return;

public/addons/zhyshop_sun/application/database.php(27行)

 'type'            => 'pgsql',

复制D:\农科院项目\zhydb目录到项目根目录

public/data/dbconfig.php

<?php $dbconfig = array();
$dbconfig['host'] = '192.168.2.91';
$dbconfig['port'] = '54321';
$dbconfig['username'] = 'system';
$dbconfig['password'] = '';
$dbconfig['database'] = 'nky8';
$dbconfig['prefix'] = 'ims_';
$dbconfig['redis_host'] = '127.0.0.1';
$dbconfig['redis_password'] = null;
$dbconfig['redis_port'] = '6379';

金仓方面

  1. 在框架E:\project\zhyframe\app\Libs\HandleKingbase.php已经含有mysql转金仓的用法
  2. 金仓数据库需要有函数

其它方面

app/Providers/DatabaseServiceProvider.php(如果有使用框架要替换该文件)

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class DatabaseServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(){

    }
    public function register(){
        // $this->msyql_register();
        $this->pgsql_register();
    }
    public function msyql_register(){
        include __DIR__."/../../public/data/dbconfig.php";
        include __DIR__."/../../public/data/dbconfig_two.php";

        $config = $this->app['config']->get('database.connections.mysql');
        $config["host"] = $dbconfig['host'];
        $config["port"] = $dbconfig['port'];
        $config["database"] = $dbconfig['database'];
        $config["username"] = $dbconfig['username'];
        $config["password"] = $dbconfig['password'];
        $config["prefix"] = $dbconfig['prefix'];
        $this->app['config']->set('database.connections.mysql', $config);
        \DB::purge('mysql');
//        \DB::setTablePrefix($dbconfig['prefix']);
//        \DB::connection('mysql')->reconnect();

        $config_two = $this->app['config']->get('database.connections.mysql_two');
        $config_two["host"] = $dbconfig_two['host'];
        $config_two["port"] = $dbconfig_two['port'];
        $config_two["database"] = $dbconfig_two['database'];
        $config_two["username"] = $dbconfig_two['username'];
        $config_two["password"] = $dbconfig_two['password'];
        $this->app['config']->set('database.connections.mysql_two', $config_two);

        if(isset($dbconfig['redis_host'])&&isset($dbconfig['redis_port'])&&isset($dbconfig['redis_password'])){
            $config_redis = $this->app['config']->get('database.redis.default');
            $config_redis["host"] = $dbconfig['redis_host'];
            $config_redis["port"] = $dbconfig['redis_port'];
            $config_redis["password"] = $dbconfig['redis_password'];
            $this->app['config']->set('database.redis.default', $config_redis);
        }
    }
    /**
     * Register any application services.
     *
     * @return void
     */
    public function pgsql_register(){
        include __DIR__."/../../public/data/dbconfig.php";
        include __DIR__."/../../public/data/dbconfig_two.php";

        $config = $this->app['config']->get('database.connections.pgsql');
        $config["host"] = $dbconfig['host'];
        $config["port"] = $dbconfig['port'];
        $config["database"] = $dbconfig['database'];
        $config["username"] = $dbconfig['username'];
        $config["password"] = $dbconfig['password'];
        $config["prefix"] = $dbconfig['prefix'];
        //  print_r($config);
        //  exit();
        $this->app['config']->set('database.connections.pgsql', $config);
        //\DB::purge('pgsql');
//        \DB::setTablePrefix($dbconfig['prefix']);
//        \DB::connection('mysql')->reconnect();

        /*   $config_two = $this->app['config']->get('database.connections.mysql_two');
           $config_two["host"] = $dbconfig_two['host'];
           $config_two["port"] = $dbconfig_two['port'];
           $config_two["database"] = $dbconfig_two['database'];
           $config_two["username"] = $dbconfig_two['username'];
           $config_two["password"] = $dbconfig_two['password'];
           $this->app['config']->set('database.connections.mysql_two', $config_two);*/

        if(isset($dbconfig['redis_host'])&&isset($dbconfig['redis_port'])&&isset($dbconfig['redis_password'])){
            $config_redis = $this->app['config']->get('database.redis.default');
            $config_redis["host"] = $dbconfig['redis_host'];
            $config_redis["port"] = $dbconfig['redis_port'];
            $config_redis["password"] = $dbconfig['redis_password'];
            $this->app['config']->set('database.redis.default', $config_redis);
        }
    }
}

vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php(145行)

$dsn = "kdb:{$host}dbname={$database}";

报找不到active_img_hz错误

app/helpers.php

if (!function_exists('active_img_hz')) {
    /**
     * Get the active class if the condition is not falsy
     *
     * @param        $condition
     * @param string $activeClass
     * @param string $inactiveClass
     *
     * @return string
     */
    function active_img_hz($condition, $activeClass = 's', $inactiveClass = 'u')
    {
        return $condition ? $activeClass : $inactiveClass;
    }
}