thinkphp3.2的mysql数据库迁达梦数据库 TP3.2+DM数据库改造

最近有个项目,要改用达梦数据库,记录一下操作步骤,供大家参考

1,安装达梦数据库

    这个直接到达梦数据库官网下载,开发者注册一下,免费下载学习用,商用的自己购买版权。

    根据提示安装,这里用WIN7测试的。安全完后打开,创建数据库,一切顺利。操作与mssql或mysql差不多。

2,迁移数据

    将MySQL数据迁移进达梦,达梦软件自带了迁移工具,支持各数数据的迁移;

    期间遇到各种问题:

    1,直连腾讯云数据库做迁移,能链接上,但是迁数据时报错,显示表分析出错,预览时能查看数据,执行时报错,不知是什么原因。然后更换方法2

    2,把腾讯云mysql数据导出为sql文件,然后用迁移工具导入,又报错,应该是数据格式不兼容的问题,然后换方法3

    3,在本地再搭了个mysql数据库,通过sql文件导入数据,然后再用迁移工具连本地数据库做迁移,成功。这里建议用root用户,之前尝试新建用户去执行竟然连接不上本地mysql数据库。

3,本地PHP环境加达梦驱动

    本地win7安装phpStudy测试;

    达梦数据库安装目录里面提供了文件 pdo73nts_dm.dll  php73nts_dm.dll(根据自己的php版本选择)

    

图片.png

        复制到php扩展目录ext下

图片.png

用编辑工具打开php.ini
php.ini中在末尾添加
extension=pdo73nts_dm
extension=php73nts_dm

重启Apache服务,运行 php -m ,测试dm数据库驱动加载成功

如果加载失败报“PHP Fatal error:  Unable to start DM module in Unknown on line 0”,

则将将达梦数据库安装目录bin下的以下dll文件拷贝至C:\Windows\SysWOW64C:\Windows\System32,重新启动Apache。

图片.png

phpinfo里面可以看到下图则表示成功

图片.png

4,PHP链接数据库是否成功

    以下代码网上复制的。参考

date_default_timezone_set("Asia/Shanghai");header("Content-type:text/html; Charset=utf-8");
$dm_conf = array(    
    'host'=> '127.0.0.1:5236',  //连接地址及端口    
    'db'=> 'DBNAME',  //数据库名    
    'db_user' => 'SYSDBA', //用户名    
    'db_pwd'=> '123456789', //密码);
    $pdo = new PDO("dm:host=".$dm_conf['host'].";
    dbname=".$dm_conf['db']."",$dm_conf['db_user'],$dm_conf['db_pwd']
   );

输入的中文数据是乱码,则在这里C:\windows\System32\dm_svc.conf 打开加一行

CHAR_CODE=(PG_UTF8)

图片.png

5,thinkphp框架改造

    1,增加DM数据库驱动类,让tp支持达梦数据库,

在目录下\ThinkPHP\Library\Think\Db\Driver增加Dm.class.php文件

文件下载地址

2,修改数据库连接配置文件为达梦数据库

PHP

<?php
return array(
        'DB_TYPE' => 'Dm',    
        'DB_HOST' => 'localhost',    // 服务器地址
        'DB_USER' => 'SYSDBA',        // 用户名
        'DB_PWD' => '******',        // 密码

        'DB_PORT' => '5236',            // 端口
        'DB_NAME' => 'OA',         // 数据库名
        'DB_PREFIX' => '',        // 数据库表前缀    
);

然后测试一下,数据查询功能,成功

PHP

    public function test(){
        $m=M('test');
        $data=$m->field('ID,NAME')->limit(10,3)->select();
        dump($data);
        echo $m->getLastSql();
    }

完善支持THINKPHP3.2的原开发程序。项目不用大改,不过只是测试了查询功能,其它 增、删、改 没空测试,大家自己测试。应该也差不多了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值