Mongodb 数组型索引报错:WiredTigerIndex::insert: key too large to index, failing

mongodb支持很多种索引,参看官网:https://docs.mongodb.com/manual/indexes/#index-use

创建一个简单索引: db.collection.createIndex({‘name’:1})
这种方式的索引,默认是比较小的,如果值过长就会报错WiredTigerIndex::insert: key too large to index, failing
可以该种hasded的方式 db.collection.createIndex({‘name’:’hashed’}),
如果name是数组格式,而不是字符串,就不能用hashed的索引格式了,这样,我们需要通过另外的方法来解决

https://docs.mongodb.com/manual/reference/parameters/#param.failIndexKeyTooLong

通过设置参数 failIndexKeyTooLong 为false来解决,文档里面有具体的方法,

我的mongodb的启动方式为:

/usr/bin/mongod -f /etc/mongod.conf

我在 /etc/mongod.conf 配置文件中添加下面的配置

setParameter:
  failIndexKeyTooLong: false

关于mongodb的config的详细可以参看地址:

https://docs.mongodb.com/manual/reference/configuration-options/

通过上面的方式,重启mongodb,解决了我的问题,不报错了

 

Fecshop 环境部署 以及 安装步骤

一:安装Fecshop的环境部署:

本文只讲解在Linux下面部署安装Fecshop的步骤,在windows下面不做阐述(需要安装的东西太多,windows下面部署我没有玩过,遇到的问题也不能提供好的解决方式,故而不做阐述),对于Linux开发环境,可以在window下虚拟一个linux,文档参看: 关于vagrant的安装详情参看

本文是在centos 6下面安装环境的详细步骤。

1.更新linux

yum update

2.yum安装基础

yum  install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel fontconfig-devel freetype-devel libXpm-devel gettext-devel curl curl-devel pam-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gzip  make bzip2bzip2-devel pcre-devel wget ncurses-devel cmake make perl
yum -y install gcc automake autoconf libtool make   gcc-c++ glibc  libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel lib
yum -y install gcc gcc-c++
yum install  libevent*  libtool* autoconf* libstd* ncurse* bison* openssl*  

1.2 如果在安装 libevent*的时候报错:

libevent2-devel conflicts with libevent-devel-1.4.13-4.el6.x86_64

则使用下面的安装方式

yum install  libevent2  libtool* autoconf* libstd* ncurse* bison* openssl*

查看文件是否存在

ls /usr/lib/libncurses.so

如果找不到,则

find / -name ‘libncurses.so’

我找到的文件如下:

/usr/lib64/libncurses.so

增加快捷方式

ln -s /usr/lib64/libncurses.so /usr/lib/libncurses.so

在开始安装之前,需要下载下面的这些软件,你可以通过我的打包一次下载下面,解压到您的/tools文件夹下面使用,所有的软件的下载地址为(百度云盘):

http://pan.baidu.com/s/1kVwRD2Z,进入下载:linux环境安装所需软件.zip

当然您可以自己去相应官网下载相应的软件。

2.开始安装mysql

安装教程为:

linux 安装mysql5.6

在上述安装中,遇到yum安装的地方可以直接忽略掉,因为上面已经安装了。

3.安装php 以及扩展

php有php5和php7,两种版本,下面都给予了安装文档,建议安装php7,性能比较快

3.1 php7的安装

安装php7以及扩展教程为:

php 7 环境安装

3.2 php5的安装

3.2.1 安装php5.4教程为:

Linux 安装php 5.4 – yii2 环境

在上述安装中,遇到yum安装的地方可以直接忽略掉,因为上面已经安装了。

3.2.2 安装php5.4的扩展

安装教程为:

Linux php 扩展安装 mongo ,redis ,soap,imap,pdo_mysql,oauth

注意:上面的安装php5.4扩展的教程中,有一个跳转到mongodb的教程,只需要执行里面的步骤1, 2, 3, 4.2 这几个步骤即可。步骤1,2,3是安装mongodb的步骤,步骤4.2是安装mongodb扩展的步骤,不需要安装php-mongo扩展

安装完成后重启php

/etc/init.d/php-fpm restart

 

5.安装redis

安装教程为:

yii2 – redis 配置

注意:只需要执行步骤1,2就可以了。

redis关闭命令:/etc/init.d/redis_6379 stop

redis开启命令:/etc/init.d/redis_6379 start

6.安装nginx

安装教程为:

Linux – 安装nginx – 搭配YII2环境

关于nginx的配置,您可以在上面,在百度云盘下载将环境配置里面

https://pan.baidu.com/s/1kVwRD2Z

下载 “环境配置文件.rar”,解压后,将里面的文件覆盖到linux的根目录。这里面也有php的配置,覆盖即可。

然后在 vim /usr/local/nginx/conf/conf.d/default.conf 修改里面的配置即可。

7.php设置快捷方式:

ln -s  /usr/local/php/bin/php  /usr/bin/php

 

8.linux一般安装在内部或者远程服务器,当然也可以通过vagrant安装虚拟机的方式,我们开发的时候都不需要用vim编辑,喜欢win下面的编辑器,那么可以通过下面的方式,通过编辑器的ftp功能远程加载文件的方式,教程如下:

Linux 作为开发环境的方法分享

9.其他安装推荐:(非必须安装)

安装ElasticSearch ,以及在yii2中的使用

YII2开发环境文件上传 – 安装vsftpd

linux防火墙 – apf 安装 ,配置,使用

php 安装 zend opcace