信创之路数据库人大金仓篇

news2025/1/21 18:48:35

概要

信创大势所趋,吾等上下求索

参考文档
Linux:人大金仓数据库-KingBaseES V8与 php7的连接配置
laravel9适配人大金仓(kingbase)数据库
thinkphp6适配人大金仓(Kingbase)数据库

数据库选型

目前比较有名的国产数据库听到的有两个,一个是达梦,一个是人大金仓。我们在做选型的时候为了更好的适配现有的代码,选择了人大金仓。 原因是人大金仓是以pgsql为基础的,而市面上大部分的语音框架都能支持pgsql。

安装数据库

去人大金仓官网下载即可,安装还是比较简单的,我安装了最新的V9版本,需要注意的是许可文件要下载对应版本,别搞混了。安装完成后是可以用它自带的工具进行可视化管理,当然也可以用传统的navicat进行管理,新建连接的时候选pgsql就行。
在这里插入图片描述

适配php

人大金仓目前官网的提供的php扩展,只支持5.6和7.2,而且是线程安全的版本,这个多少让我初次调试的时候踩了很多坑。通过这篇文章,里面提到的其他驱动版本,我进行了php8.1的适配,但效果不佳,无奈之余通过官网加入了QQ技术群。 通过和群里的大佬一连串沟通,终于拿到了php8.1的扩展,成功连接上了数据库。扩展传送门。
可以使用下面的代码进行单元测试

<?php
$dsn = 'kdb:host=192.168.0.34;dbname=test;port=54321';
$user = 'system';
$password = 'xxxxxxx';
$dbh = null;
try {
  $dbh = new PDO($dsn,$user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (Exception $e) {
  echo 'Connection Failed: ' . $e->getMessage() ."\n";
}

if(!$dbh){
  echo "Error : Unable to open database\n";
} else {
  echo "Opened database successfully\n";
}
$sql = 'create table "users"
    (
        "id" SERIAL primary key,
        "user_name" VARCHAR(20),
        "created_at" TIMESTAMP,
        "updated_at" TIMESTAMP DEFAULT now()::timestamp(0)
    )';
$result = $dbh->exec($sql);
?>

适配laravel9

因为人大金仓以pqsql为基础,而laravel9是支持pqsql的,所以可以参考pqsql进行驱动类的构建,这里已经有大神网友做了总结,我试了下,可以顺利使用。

小结

  1. 安装驱动是整个过程中最难的一步,涉及到的知识点也比较多,当然最重要的还是拿到争取的驱动包
  2. 适配注意事项:
    不支持default
    不支持DB:raw这种写法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决网络编程中的EOF违反协议问题:requests库与SSL错误案例分析

1. 问题背景 近期&#xff0c;一个用户在使用requests库进行网络编程时遭遇到了一个不寻常的问题&#xff0c;涉及SSL错误&#xff0c;并提示错误消息为SSLError(SSLEOFError(8, uEOF occurred in violation of protocol (_ssl.c:661)),))。该用户表示已经采取了多种方法来解决…

防范Java多线程陷阱:探秘ABA问题的起因及解决之道!

一、概念 CAS&#xff08;Compare and Swap&#xff09;是一种乐观锁机制&#xff0c;它是一种基于硬件指令实现的原子操作&#xff0c;可以在不使用传统互斥锁的情况下&#xff0c;保证多线程对共享变量的安全访问。在Java中&#xff0c;我们可以使用Atomic类和AtomicReferenc…

微服务架构演进

系统架构演变 没有最好的架构&#xff0c;只有最合适的架构&#xff1b;架构发展过程&#xff1a;单体架构》垂直架构》SOA 面向服务架构》微服务架构&#xff1b;推荐看看《淘宝技术这十年》&#xff1b; 单体架构 互联网早期&#xff0c;一般的网站应用流量较小&#xff0…

PDF处理控件Aspose.PDF功能演示:使用C#查找和替换PDF文件中的文本

使用“查找并替换”选项可以一次性替换文档中的特定文本。这样&#xff0c;您不必手动定位和更新整个文档中每次出现的文本。本文甚至更进一步&#xff0c;介绍了如何在PDF文档中自动查找和替换文本功能。特别是&#xff0c;将学习如何使用C&#xff03;在整个PDF&#xff0c;特…

此芯科技加入绿色计算产业联盟,参编绿色计算产业发展白皮书

近日&#xff0c;此芯科技正式加入绿色计算产业联盟&#xff08;Green Computing Consortium&#xff0c;简称GCC&#xff09;&#xff0c;以Arm架构通用智能CPU芯片及高能效的Arm PC计算解决方案加速构建软硬协同的绿色计算生态体系&#xff0c;推动绿色计算产业加速发展。 继…

Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg ;解决gif转mp4转换后无法播放问题

安装ffmpeg apt install ffmpeg -y gif转mp4 ffmpeg -f gif -i ldh.gif ldh.mp4 故障&#xff1a;生成没报错&#xff0c;但mp4无法播放&#xff0c;体积也不正常 尝试编译安装最新版 sudo apt install -y yasm axel -n 100 https://ffmpeg.org/releases/ffmpeg-6.0.1.tar.x…

【k8s集群搭建(二):基于虚拟机的linux的k8s集群搭建_超详细_可视化界面Dashboard安装_记录全过程踩坑记录及解决方法】

在 master 执行 # 根据 在线配置文件 创建资源 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml设置访问端口 # 修改配置文件 找到 type&#xff0c;将 ClusterIP 改成 NodePort kubectl edit svc kubernetes-…

QML20、布局

1.概述 首先,QML同样允许大家使用硬编码的方式将位置数值直接写到代码中,但是这样做首先难以适应UI的调整,其次代码维护起来也很困难。因此不推荐这样做。推荐大家使用的是以下三种布局管理器:Row,、Column、Grid、Flow,以及使用Anchor进行布局。 2.Row QML 中的 Row 元素…

JS-项目实战-鼠标悬浮变手势(鼠标放单价上生效)

1、鼠标悬浮和离开事件.js //当页面加载完成后执行后面的匿名函数 window.onload function () {//get:获取 Element:元素 By:通过...方式//getElementById()根据id值获取某元素let fruitTbl document.getElementById("fruit_tbl");//table.rows:获取这个表格…

如何录制视频课程?打造高品质在线教学!

在线教学和知识分享已经成为一种新型的教育模式&#xff0c;录制视频课程成为了许多教师、教育培训机构以及知识分享爱好者的首选。可是如何录制视频课程呢&#xff1f;本文将介绍两种录制视频课程的方法&#xff0c;并对其进行分步骤详细说明&#xff0c;以帮助您轻松创建令人…

手写LASSO回归python实现

import numpy as np from matplotlib.font_manager import FontProperties from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split import matplotlib.pyplot as pltclass Lasso():def __init__(self):pass# 数据准备def prepar…

YB2502单片集成带可设定输出电流开关型降压转换器

描述&#xff1a; YB2502单片集成带可设定输出电 流开关型降压转换器&#xff0c;可在宽输入电压范围提供1.2安培的持续输出电流&#xff0c;具有优良的负载和线性调整度。最大输出电流可通过外接高精度取样电阻来设定。安全保护机制包括每周期的峰值限流、内部软启动和温度保护…

深度学习入门(第二天)——走进深度学习的世界 神经网络模型

反向传播计算方法 简单的例子&#xff1a; 如何让 f 值更小&#xff0c;就是改变x、y、z&#xff0c;而损失函数也是这样&#xff0c;那么我们分别求偏导&#xff0c;则能得出每个值对结果的影响 链式法则 梯度是一步一步传的 复杂的例子&#xff1a; 神经网络整体架构 类生…

SpringBoot + Disruptor 实现特快高并发处理,使用Disruptor高速实现队列

1 前言 工作中遇到项目使用Disruptor做消息队列&#xff0c;对&#xff01;你没看错&#xff0c;不是Kafka也不是rabbitmq。Disruptor有个最大的优点就是快&#xff0c;还有一点它是开源的哦&#xff0c;下面做个简单的记录。 2 Disruptor介绍 Disruptor 是英国外汇交易公司…

【原创分享】PMU电源PCB设计要点

PMU&#xff08;Power Management Unit&#xff09;电源管理单元是一种集成在计算机、手机等电子设备中的芯片&#xff0c;用于管理设备的电源供应和功耗控制。 PMU主要具有以下功能&#xff1a; 1. 供电管理&#xff1a;PMU负责向设备的各个部分提供适当的电源电压和电流。 …

android studio编译SDL so库

一、下载源码 SDL官网 二、解压&#xff0c;拷贝android项目&#xff0c;并重新命名 2.1、解压 2.2&#xff0c;重命名项目名称&#xff08;androidSDL&#xff09;AndroidSDL Github 三、导入头文件和源文件&#xff0c;修改android.mk文件 3.1、在jni目录下创建SDL2文件…

在Broker端进行消息过滤

在Broker端进行消息过滤&#xff0c;可以减少无效消息发送到Consumer&#xff0c;少占用网络带宽从而提高吞吐量。Broker端有三种方式进行消息过滤。 1.消息的Tag和Key 对一个应用来说&#xff0c;尽可能只用一个Topic&#xff0c;不同的消息子类型用Tag来标识&#xff08;每条…

工业机器人轨迹规划研究进展及发展趋势

原创 | 文 BFT机器人 01 轨迹规划简介 轨迹规划是工业机器人运动控制的基础&#xff0c;对工业机器人的工作效率和稳定性有重大影响。为掌握工业机器人轨迹规划方法的研究现状&#xff0c;根据工业机器人规划空间和优化目标的不同对轨迹规划方法进行分类&#xff0c;介绍了直…

SOP作业指导书系统如何帮助厂家实现数字化转型

SOP&#xff08;Standard Operating Procedure&#xff0c;标准操作程序&#xff09;电子作业操作手册的应用对于厂家实现数字化转型起着至关重要的作用。本文将探讨SOP电子作业操作手册如何帮助厂家实现数字化转型的重要性和优势。 首先&#xff0c;SOP作业指导书可以提高生产…

七、Nacos和Eureka的区别

一、nacos注册中心 二、临时实例与非临时实例 三、区别 Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式&#xff0c;非临时实例采用主动检测模式临时实例心跳不正常会被剔除&#xff0c;非临时实例则不会被剔除Nacos支持服务列表变更的消息推送模式&#xff0c;服务…