使用 thinkphp 3.2.3 连接 mongodb 数据库
来源:互联网 发布:希尔排序算法 java 编辑:程序博客网 时间:2024/06/05 06:01
一如既往的搜了超级多的教程,又一如既往的大同小异,终于被我连接上了
首先很多教程都只讲了两个文件,一个是控制器,一个是配置文件,就算有讲模型类的也是说不用修改太多的,其实模型类才是关键,首先先列出几个我遇到的问题
第一个:Call to a member function selectCollection() on null
第二个:无法加载数据库驱动:Think\Db\Driver\Mongodb
第三个:Failed to connect to:127.0.0.1:27017:SASL Authentication failed on database 'test':Authentication failed
第四个:127.0.0.1:27017:not authorized for query on system.users
第一个问题是由于没有传入集合名,即使你以为自己传入了,通过在对应的模型类下设置参数就行了 protected $tableName = 'admin1';
第二个问题是由于配置时将 mongo 写成了 mongodb,
第三个是没有选择 admin 表进行登录,
第四个是你登录时操作的表超过了你登录所用帐号的权限
其次再来讲以下我失败的例子
我首先在模块下的 config.php 中配置了数据库的配置参数
'DB_TYPE' => 'mongo', // 数据库类型
'DB_HOST' => '127.0.0.1', // 服务器地址
'DB_NAME' => 'admin', // 数据库名
'DB_USER' => 'trouble i am in', // 用户名
'DB_PWD' => 'trouble i am in', // 密码
'DB_PORT' => '27017', // 端口
(把 'DB_TYPE' => 'mongo', 设置成 'DB_TYPE' => 'mongodb', 就会出现上面的第二类问题)
但是这样配置完了之后问题就来了,我上面登录的是 admin 数据库,但是我实际上操作的又是 test 的表,如果上面修改成 test 的表,就会出现上面的第三类错误,而在成功登录 admin 数据库后,我再使用 thinkphp 的 db() 重新连接别的数据库多转几圈之后脑子就昏了,而且我也没有成功过。
所以为了解决上面的问题,直接抛弃配置文件,在模型类中设置相应数据库的信息
第一步,模型文件
<?php
namespace Home\Model\MongoDB;
use Think\Model\MongoModel;
class Admin1MongoModel extends MongoModel{
//使用下面这句话进行数据库的连接,其中的各个位置的含义,查看我的这篇文章
protected $connection = 'mongo://admin1:admin1@127.0.0.1:27017/admin'; //这里跟前一篇使用 MongoClient 连接 MongoDB 的格式一样,注意后面一定要是 admin
protected $tableName = 'admin1'; //在这里指定要操作的表
protected $dbName = 'test';//这里指定数据库的名字
}
?>
在模型文件中定义好这些参量之后一定要配置文件里面的内容去掉,否则还是以配置文件为主的
第二步,在控制器中测试连接是否成功
<?php
namespace Home\Controller;
use Think\Controller;
use Home\Model\MongoDB\Admin1MongoModel;
public function index() {
$mondel = new Admin1MongoModel("admin1"); //这里传不传如表名都没关系
$message = $mondel->find(); //简单的查询一个数据
var_dump($message);
}
}
如果你的用户名和密码正确,权限足够,那么就可以查询到你的数据
- 使用 thinkphp 3.2.3 连接 mongodb 数据库
- ThinkPHP连接Mongodb方法
- Thinkphp使用mongodb数据库实现多条件查询方法
- thinkPHP连接远程数据库
- thinkphp连接数据库
- ThinkPHP连接mysql数据库
- thinkPHP连接数据库
- ThinkPHP连接数据库
- thinkPHP 连接数据库
- thinkphp连接数据库配置
- thinkphp 连接mysql数据库
- thinkphp连接sybase数据库
- thinkphp连接数据库具体步骤
- Thinkphp 模型->连接数据库
- FineReport如何连接和使用MongoDB数据库
- 使用MongoDB命令连接远程服务器的MongoDB数据库
- 使用MongoDB命令连接远程服务器的MongoDB数据库
- 使用MongoDB命令连接远程服务器的MongoDB数据库
- VirtualBox: Resize a Fedora, CentOS, or Windows Dynamic Guest Virtual Disk (VDI) in VirtualBox
- 计算一棵完全二叉树上节点的数目
- leetcode_c++:Integer to English Words(273)
- python中的条件判断语句
- 2016.08.19【初中部 NOIP普及组 】模拟赛
- 使用 thinkphp 3.2.3 连接 mongodb 数据库
- java内部类
- 【校内互侧】ZYF loves binary (dp)
- android 根据设置的日期获取星期几
- 除去ScrollVIew拉到尽头时再拉的阴影效果和个别机型的阻尼效果
- dubbo+zookeeper集群
- linux和qt 字符串和数字转换篇
- hdu2087 剪花布条 KMP
- Java用观察者模式重构复杂的业务代码