thinkphp6 多应用模式链接 mongoDB 开发笔记

小编的下载路径供参考:

https://windows.php.net/downloads/pecl/releases/mongodb/1.8.1/

thinkphp6 多应用模式链接 mongoDB 开发笔记

mongoDB 命令行操作

(1) 管理员登录mongo(注意:新安装环境默认没有超级用户密码) mongo [库名] -u [用户名] -p 示例,使用 yix 用户登录 db_yixzm 库

mongo db_yixzm -u yix -p

认证用户

db.auth('db_yixzm ','once')

(2) 新增用户并授权

db.createUser( {user: "once",pwd: "once",roles: [ { role: "readWrite", db: "db_yixzm" } ]})

更新用户信息

db.updateUser( "once",{pwd: "once",roles: [ { role: "readWrite", db: "db_yixzm" } ]})

报错及解决

tp6 连接 mongo 开发过程中有几次报错,报错内容及解决方法如下: (1) 报错

No suitable servers found (`serverSelectionTryOnce` set):

原因: 端口不匹配。(.env文件和应用下config目录下的database.php文件都要检查,确保端口没有错误) (2) 报错

Class 'MongoDB\Driver\Query' not found

原因: MongoDB驱动有问题,多半是因为 php_mongodb.dll 版本不对,或者 php.ini 中的 php_mongodb 扩展没有打开。 分享一个版本查看方法: composer require mongodb/mongodb ,版本不一致就会报错,告诉你框架真正需要的版本号 (3) 密码中包含!或者@字符引起的报错。简单办法是改密码,或者新增用户不要使用包含!或者@字符的密码。 (4) 报错:

Authentication failed.

解决: 修改文件

vendor\topthink\think-orm\src\db\connector\Mongo.php

将connect函数替换为以下代码:

    /**
     * 连接数据库方法
     * @access public
     * @param  array   $config 连接参数
     * @param  integer $linkNum 连接序号
     * @return Manager
     * @throws InvalidArgumentException
     * @throws RuntimeException
     */
    public function connect(array $config = [], $linkNum = 0)
    {
        if (!isset($this->links[$linkNum])) {
            if (empty($config)) {
                $config = $this->config;
            } else {
                $config = array_merge($this->config, $config);
            }

            /**
             * TinyMeng update start
             * DateTime: 2020-04-20 11:15
             */
            if (!empty($this->config['username'])) {
                $this->config['params']['username'] = $this->config['username'];
            }
            if (!empty($this->config['password'])) {
                $this->config['params']['password'] = $this->config['password'];
            }
            if (!empty($this->config['auth_database'])) {
                $this->config['params']['db'] = $this->config['auth_database'];
            }

            $this->dbName = $config['database'];
            $this->typeMap = $config['type_map'];

            if ($config['pk_convert_id'] && '_id' == $config['pk']) {
                $this->config['pk'] = 'id';
            }

            if (empty($config['dsn'])) {
                $config['dsn'] = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '') . ($config['database'] ? "/{$config['database']}" : '');
            }

            $startTime = microtime(true);

            $this->links[$linkNum] = new Manager($config['dsn'], $config['params']);

            if (!empty($config['trigger_sql'])) {
                // 记录数据库连接信息
                $this->trigger('CONNECT:[ UseTime:' . number_format(microtime(true) - $startTime, 6) . 's ] ' . $config['dsn']);
            }

        }

        return $this->links[$linkNum];
    }

至此,所有问题顺利解决。

版权声明

FindFor


首发 FindFor,转载请附链接!

赞赏支持

感谢支持!


建站不易,感谢支持!

推荐阅读
web开发技术栈(框架)总结
Bootstrap-Layui-Amazeui-jQuery-vue-react-AngularJS-ci-Thinkphp-Yii-Laravel-Node-Django-springMVC-apache-nginx-mysql-redis…… 天呐,好多…… 小编虽说出身工业软件,但心里一直藏着一个UI梦。近两年,小编业余时间从零开始摸索web开发,把web开发常用的技术和框
4656

web前端开发技术储久良第三版第6章练习与实验答案
### [web前端开发技术储久良第三版答案整理(1-9章)](https://www.yixzm.cn/blog/367.html) 练习6 **1.选择题** (1)D (2)A (3)D(4)B **2.填空题** (1)``、``,`` (2)border="0" (3)矩形;圆形;多边形。 3.简答题 (1)设置滚动空白空间就是指滚动文字背景和它周围文字及图像之间的空白空间范围。默认
14932

web前端开发技术储久良第三版第2章练习与实验答案
### [web前端开发技术储久良第三版答案整理(1-9章)](https://www.yixzm.cn/blog/367.html) 练习2 **1.选择题** (1) B (2) D (3) A (4) B (5) A (6) B **2.填空题** (1) html、htm,index.html、default.html (2) head、body (3) 单、双,双,开
16104

web前端开发技术储久良第三版第12章练习与实验答案
### [web前端开发技术储久良第三版答案整理(10-17章)](https://www.yixzm.cn/blog/368.html) ** 1.选择题 ** (1)D (2)C (3)B (4)C (5)A ** 2.填空题 ** (1)post、get (2)浏览器、服务器 (3)``、name、size、multiple (4)textarea、rows、co
18230

web前端开发技术储久良第三版第13章练习与实验答案
### [web前端开发技术储久良第三版答案整理(10-17章)](https://www.yixzm.cn/blog/368.html) 练习13 ** 1.选择题 ** (1)C (2)A (3)D (4)C (5)A (6)D (7)B (8)D (9)C (10)D (11)C (12)A ** 2.填空题 ** (1)input、list、id。 (2) sr
13567

web前端开发技术储久良第三版第11章练习与实验答案
### [web前端开发技术储久良第三版答案整理(10-17章)](https://www.yixzm.cn/blog/368.html) 练习11 **1.选择题** (1)B (2)D (3)D (4)B (5)D (6)B **2.填空题** (1)``、 ``、`` (2) rowspan 、3、 Colspan 、 5 (3) frame、rules (4) cellspa
20353

web前端开发技术储久良第三版第10章练习与实验答案
### [web前端开发技术储久良第三版答案整理(10-17章)](https://www.yixzm.cn/blog/368.html) 练习12 **1.选择题** (1)B (2)A (3)C (4)D (5)A **2.简答题** (1)略 (2) display: none让对象不显示,原来不存在。 display:block—作用是显示特定对象;visibility: visib
22837

web前端开发技术储久良第三版答案整理(下:附录模拟试卷)
[web前端开发技术储久良第三版答案整理(下:附录模拟试卷)_诗和远方_弈心博客](https://www.yixzm.cn/blog/369.html) [web前端开发技术储久良第三版答案整理(中:10-17章)_诗和远方_弈心博客](https://www.yixzm.cn/blog/368.html) [web前端开发技术储久良第三版答案整理(上:1-9章)_诗和远方_弈心博客](ht
9326

web前端开发技术储久良第三版第5章练习与实验答案
### [web前端开发技术储久良第三版答案整理(1-9章)](https://www.yixzm.cn/blog/367.html) 练习5 **1.选择题** (1) D (2) C (3) B (4) C (5) B (6) A (7)B **2.填空题** (1) `href="mailto:someone@mail.com" ` (2) name、“#targe
6010

Web前端开发工程师面试(2020-9-15 面试笔试题目及回答思路指南)
面试题来自某互联网独角兽公司的前端开发工程师岗位面试记录,刚打听到的还很新鲜。 面试官和面试者小编都挺熟悉,所以内容具备一定参考价值。 面试中夹杂笔试,整个过程流程大体如下: ### 1 Q:简单做下自我介绍 A:这里是在问前端技术路线、技术面、技术成长规划,别有的没的讲一堆废话。 ### 2 Q:离职原因是什么? A:这里是问你,哪些原因会导致你离职?你工作的不稳定因素有哪些?你
2311

Web前端开发工程师笔试题(2019-3-28 整理16道,含答案)
前端时间因工作需要,整理了一套笔试题。 网上有许多套题,重复的比较多。出于笔试时间考虑,本文摘取16道,包含了CSS基本使用、时间绑定、定时器、存储、ajax和框架原理等内容。 题目偏简单,覆盖知识点勉强算全面。如果有更好的题目,也欢迎补充。 放着这里,希望能给正在准备面试的朋友们带来一点点价值。 ### 1. 一个200x200的div在不同分辨率屏幕上下左右居中,用css实现: di
2866

web前端开发技术储久良第三版答案整理(中:10-17章)
[web前端开发技术储久良第三版答案整理(上:1-9章)](https://www.yixzm.cn/blog/367.html) [web前端开发技术储久良第三版答案整理(中:10-17章)](https://www.yixzm.cn/blog/368.html) [web前端开发技术储久良第三版答案整理(下:附录模拟试卷)](https://www.yixzm.cn/blog/369.h
23483