达梦数据库安装与php连接达梦数据库

官方文档地址

达梦数据库安装

可访问达梦云适配中心下载试用,下载 DM8 数据库试用版并安装,安装步骤请参考数据库环境准备
在这里插入图片描述

php配置达梦数据库(windows系统)

在这里插入图片描述
修改php.ini文件

extension="D:\dmdbms\drivers\php_pdo\pdo73_dm.dll"
extension="D:\dmdbms\drivers\php_pdo\php73_dm.dll"

在这里插入图片描述
将dmdbms\drivers\dpi下的所有.dll文件拷贝到C盘中
在这里插入图片描述

测试代码

<?php
try {
    // 1. PDO连接字符串 - 达梦数据库专用格式
    $dsn = "dm:host=localhost;port=5236;dbname=DMHR;charset=utf8";
    
    // 2. 创建PDO实例(用户名,密码)
    $username = "SYSDBA";
    $password = "Qwe123456";
    
    $pdo = new PDO($dsn, $username, $password);
    
    // 3. 设置错误模式为异常模式,便于调试
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "连接成功!<br>";

    
} catch (PDOException $e) {
    // 详细的错误处理
    echo "连接失败:".$e->getMessage()."<br>";
    echo "错误代码:".$e->getCode()."<br>";
    
    // 如果需要更详细的错误信息
    if ($pdo) {
        echo "<pre>";
        print_r($pdo->errorInfo());
        echo "</pre>";
    }
} catch (Exception $e) {
    echo "其他错误:".$e->getMessage()."<br>";
}
?>
报错连接失败:SQLSTATE[HY000] dpi_login: -70089 ����ģ�����ʧ�� 错误代码:-70089

原因是:PHP在运行时找不到达梦数据库依赖的加密库文件(如 libcrypto.so/.dll 或 libdmcrypto.so/.dll)。系统已经知道有达梦这个扩展,但在启动它时,找不到它需要的“零件”(加密库)
解决方案:在达梦的D:\dmdbms\bin文件夹中找到libeay32.dll, ssleay32.dll,将这些文件粘贴到php目录或系统目录中
方案一(推荐):将这些 .dll 文件复制到你 PHP 安装目录的根目录下(即 php.exe 所在的文件夹)。
方案二(推荐):将它们复制到 C:\Windows\System32 目录下
方案三:将达梦的 bin 目录(如 D:\dmdbms\bin)添加到系统的 PATH 环境变量中,然后重启电脑

备选方案:关闭数据库加密(这种方法会降低数据库通信的安全性,仅建议在开发和测试环境中临时使用。
找到达梦数据库安装目录下的 dm.ini 文件,找到参数 ENABLE_ENCRYPT,将其值从 1 改为 0

ENABLE_ENCRYPT = 0
执行查询、新增、修改、删除sql时报错:SQLSTATE[HY000]: General error: -2106 ��1 �и������ִ���: ��Ч�ı�����ͼ��[STUDEN] (dpi_prepare[-2106] at dm_driver.c:500)错误代码:HY000
// 方案一:$pdo->exec("SET SCHEMA DMHR");
// 方案二:加上具体的模式名DMHR.STUDEN
$sql = "INSERT INTO DMHR.STUDEN (STUDEN_NAME, STUDEN_IDNO, STUDEN_PHOTO) VALUES (:name, :idno, :photo)";
        $stmt = $pdo->prepare($sql);
        
        // 绑定参数并执行
        $i_res = $stmt->execute([
            ':name' => '张三',
            ':idno' => '123465789',
            ':photo' => ''
        ]);
        if($i_res){
            echo "数据插入成功!新插入记录的ID是: " . $pdo->lastInsertId();
        }else{
            echo "数据插入失败!";
        }
新增写入后的数据中文乱码

在这里插入图片描述

查询当前数据库的字符集

SELECT SF_GET_UNICODE_FLAG() AS UNICODE_FLAG;

在这里插入图片描述
解决方案:
在 PHP 所在的机器上配置 dm_svc.conf 文件
如果你的 PHP 是 32位 且安装在 64位 Windows 上:C:\Windows\SysWOW64
如果是 64位 PHP 或不确定:C:\Windows\System32
创建或编辑dm_svc.conf

# 在文件开头添加以下内容
CHAR_CODE=(PG_UTF8)
TIME_ZONE=(480)
LANGUAGE=(cn)

# 如果有具体的服务名配置,可以添加
[DMHR]
CHAR_CODE=(PG_UTF8)

重启apache或 PHP-FPM

内容概要:本文档详细介绍了达梦数据库DM8PHP-PDO扩展的集成方法,涵盖从环境搭建、驱动编译、配置详解到实际应用案例的全过程。首先,文档解析了DM8的系统架构和技术特性,重点介绍了其支持的两种存储引擎(堆表和聚簇表),并阐述了PDO_DM驱动的工作原理及其DM8的通信机制。接着,文档详细描述了PHP环境的配置要求,包括操作系统、DM8数据库PHP版本及Visual C++ Redist的要求,以及驱动文件的获取验证步骤。此外,还深入探讨了PDO连接配置、高级连接选项(如SSL配置)、连接状态监测故障转移等技术细节。文档进一步讲解了PDO核心操作,包括CRUD操作、达梦特有功能(如序列、分区表、全文索引)的集成,以及高级数据类型(如BLOB/CLOB、JSON、空间数据)的处理方法。在事务管理和并发控制方面,文档介绍了事务的基础操作、隔离级别设置、锁机制并发控制,以及分布式事务处理。性能优化部分涵盖了SQL优化、批量操作优化、存储过程函数调用等内容。最后,文档通过实际应用案例展示了企业级应用架构设计、高并发处理方案(如读写分离、缓存集成)、数据迁移同步的方法,以及故障诊断性能调优的具体实践。 适用人群:具备一定PHP编程基础,熟悉数据库操作,尤其是希望将PHP应用达梦数据库DM8集成的研发人员和技术团队。 使用场景及目标:①了解达梦数据库DM8的技术架构及其PHP-PDO扩展的集成方法;②掌握PHP环境配置、驱动编译验证的步骤;③实现高效稳定的PHP-PDO连接配置,包括SSL加密、连接池优化等;④掌握CRUD操作、高级数据类型处理及达梦特有功能的集成;⑤理解和应用事务管理、并发控制及分布式事务处理;⑥优化SQL查询性能,提升批量操作效率,调用存储过程函数;⑦设计高并发处理方案,实施数据迁移同步;⑧进行故障诊断性能调优,确保系统的稳定性和高效性。 其他说明:本文档不仅提供了详细的理论知识和技术背景,还包含大量实用的操作步骤和代码示例,帮助读者快速上手并解决实际问题。文档内容详尽,适合从初学者到有一定经验的技术人员参考使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值