一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Database

通C#访问MongoDB数据

开始: 先下载个C#的驱动。MongoDB提供各种主流与非主流预言的开发驱动。 C# Driver 下载地址:猛击这里 CSharp Driver Tutorial:猛击这里 下载文件安装或者解压缩包 如果您是安装,请到安装位置寻找,如果是ZIP压缩包,解压缩包得到如下两个文件: MongoDB.Bson.dll              :序列化、Json相关 MongoDB.Driver.dll             :我们的驱动 没了,只有这两个文件是我们的最爱。   继续: 新建一个C#的项目,不管你是vs2008,还是vs2010,也许您手中有vs2012?也发给我一份吧。感谢共享:) 添加引用,将上面两个DLL引入到项目里面   您启动Mongod.exe了吗?启动服务。   代码里面添加命名空间: using MongoDB.Bson; using MongoDB.Driver; 跟着[CSharp Driver Tutorial:猛击这里]继续做。如果您没有打开[CSharp Driver Tutorial]就不要开了,看完全文再看,以免分散精力。 //  MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 string  connectionString  =   " mongodb://localhost " ; //  连接到一个MongoServer上 MongoServer server  =  MongoServer.Create(connectionString); MongoDb的连接串 在连接串中,我们可以指定其他机器上的服务和连接端口格式如下: mongodb://[username:password@]hostname[:port][/[database][?options]] 简单示例:mongodb://server1,server2:27017,server2:27018 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里] MongoServer 有几种不同的重载了的创建方式: MongoServer Create()   如果只是连接本机,并且本机只启动了一个服务,直接调用这个方法,完全不需要连接串 MongoServer Create(MongoConnectionStringBuilder builder) MongoServer Create(MongoUrl url) MongoServer Create(string connectionString) MongoServer Create(Uri uri) 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里] 继续: 再增加几行代码: //  MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 string  connectionString  =   " mongodb://localhost […]

龙生   05 Apr 2015
View Details

关于Mongodb启动服务时1067错误的解决方法

如图:按照官网Install MongoDB on Windows(参考文尾备注)章节介绍安装完服务之后,无论是命令行net start mongodb,还是在系统服务中启动MongoDB服务,都会提示1067的错误。 网上有些说删除Mongodb数据库目录下的mongod.lock文件之后可以正常重启服务,但是笔者试了之后还是不行,也觉得删除这类文件是治标不治本或者不安全的。 仔细看了下上面链接中的文档,因为我并未按照默认的C:\路径安装Mongodb,以及在C:\下面md data文件存放数据库,而是放在了D:\MongoDB(程序目录),以及D:\DB_MongoDB(数据库目录),初步觉得问题就出在这个问题之上。         如图,在mongod.cfg文件中指定了dbpath,再启动服务,就正常了。 (不止dbpath,其它必要的配置不正确或者不完全也可能导致1067服务启动失败的情况。) 备注: 官方安装Mongodb的Windows服务说明可能在更新,一般可按照以下方法直接安装Windows服务: ? 1 D:\Program Files\MongoDB 2.6 Standard\bin>mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath D:\Program Files\MongoDB 2.6 Standard\log\MongoDB.Log --dbpath D:\Program Files\MongoDB 2.6 Standard\db --directoryperdb 需要注意的是,log与db目录都要事先创建。   from:http://my.oschina.net/iuranus/blog/176258

龙生   04 Apr 2015
View Details

Mongodb 安装 以及 问题解决

一,下载 1.官网为:http://www.mongodb.org/ ;下载安装程序的地址为:http://www.mongodb.org/downloads ,选择选择的是Windows 32-bit 2.4.0版本。 2.下载MongoDB For .net 驱动开发包,官方的c#driver位于driver菜单下,地址为:https://github.com/mongodb/mongo-csharp-driver/downloads。这里还了解到有samus驱动下载地址:https://github.com/samus/mongodb-csharp 二,安装 1.将mongodb-win32-i386-2.4.0.zip解压到目录E:\mongodb-2.4.0,也就是把Bin目录放在该文件夹下。 2.在E:\mongodb-2.4.0创建Data文件夹,然后在该目录下分别创建db,log两个文件夹,至此E:\mongodb-2.4.0文件目录下有三个文件夹(bin,data,log). 3.在log文件夹下创建一个日志文件log.log,即完全目录为:E:\mongodb-2.4.0\log\log.log. 4. 程序启动方式 进入bin目录,在目录上输入cmd ,回车 弹出CMD窗口 mongod -dbpath "E:\mongodb-2.4.0\data\db" 执行此命令即将mongodb的数据库文件创建到C:\Program Files\mongodb\data\db 目录。 接着将Mongodb安装成windows服务 mongod --logpath "E:\mongodb-2.4.0\log\log.log"  --logappend --dbpath "E:\mongodb-2.4.0\data\db" --directoryperdb --install 测试数据库操作 在bin目录打开 mongo.exe   >help (查看相关信息) >db.foo.insert({test:100}) (往foo表插入test,100字段值,foo表为默认表) >db.foo.find() (查看foo表数据) 结果如下: 可以看到插入了2条记录分别人set,test 其它命令可查阅help命令或官网说明。               遇到的问题解决 ——————————————-- 1. 首先,当然是下载 MongoDB MongoDB的官方网站是:http://www.mongodb.org/, 最新版本下载在:http://www.mongodb.org/downloads 。请注意下载适合自己系统的安装包,我选择的是:Windows 64-bit 2008 R2+。 下载后的文件名称是:mongodb-win32-x86_64-2008plus-ssl-3.0.1-signed.msi ,点击安装。   根据官方文档:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/ Starting in version 2.2, MongoDB does not support Windows XP. Please use a more recent version of Windows to use more recent releases of MongoDB. 大意是:从版本2.2开始,MongoDB不支持Windows XP。请用较新版本的Windows来使用MongoDB的最新版本。     2. 创建数据库文件的存放位置 […]

龙生   04 Apr 2015
View Details

MongoDB 管理

1.启动和停止MongoDB 执行mongod,启动MongoDB服务器。mongod有很多选项,在命令中执行 mongod --help 主要选项如下: --dbpath 指定数据目录,默认值是C:\data\db。每个mongod进程都需要独立的数据目录。如果要是有3个mongod 实例,那么必须有3个独立的数据目录。当mongod启动时,会在数据库目录中创建mongod.lock文件 这个文件用于防止其他的mongod纯净使用该数据目录。 --port 指定服务器监听的端口号,默认端口27017.要运行多个mongod进程,则要给每个指定不同的端口号。 --logpath 指定日志的输出路径。如果对文件夹有读写权限,系统会在文件不存在时创建它。它会将已有文件覆盖掉, 清除所有原来的日志记录。如果想要保留原来的日志,需使用--logappend选项。 --config 指定配置文件,加载命令行未指定的各种选项。   2.从配置文件启动 MongoDB支持从文件获取配置信息.当需要配置非常多或者要自动化MongoDB的启动时会用到. 指定配置文件可以用-f或--config选项. 如: mongod --config refactorConfig.txt refactorConfig.txt内容如下: #start MongoDB port = 10000 dbpath = "f:\mongo\db" logpath = "f:\mongo\log\MongoDB.txt" rest = true 配置文件和命令行的功能一样 mongod --dbpath "f:\mongo\db" --logpath "f:\mongo\log\MongoDB.txt" --rest --port 10000 配置文件的特点: a.以#开头的行是注释 b.指定选项的语法是这种"选项=值"的形式.选项是区分大小写的. c.命令行如--rest的开关选项,值要设为true   3.停止MongoDB 可以使用shutdown命令{"shutdown":1},这个命令要在admin数据库下使用.shell还提供了辅助函数: use admin db.shutdownServer()   4. 监控 使用管理接口,默认情况下,启动mongod会启动基本的http服务器,该服务的默认端口是28017.可以在浏览器中输入 localhost:28017.有些链接需要在mongod启动时,用--rest选项开启rest支持 才能进去.当开启rest支持后,可以 在mongod启动时使用--nohttpinterface来关闭管理接口.   5.serverStatus 要获取运行中的MongoDB服务器统计信息,最基本的工具是serverStatus命令 db.runCommand({"serverStatus":1}) serverStatus返回的键解释: "globalLock"的值表示全局写入锁占用了服务器多少时间(单位微秒) "mem"包含服务器内存映射了多少数据,服务器进程的虚拟内存和常驻内存的占用情况(单位MB) "indexCounters"表示B树在磁盘检索("misses")和内存检索("hits")的次数.如果这个比值开始上升,就要考虑加内存了. "backgroundFlushing"表示后台做了多少次fsync以及用了多少时间 "opcounters"文档包含了每种主要操作的次数 "asserts"统计了断言的次数   6.mongostat serverStatus虽然强大,但对服务器的监控来说不怎么容易.MongoDB提供了mongostat mongostat输出一些serverStatus提供的重要信息,它会每秒输出新的一行,比之前看到的静态数据实时性要好. 它输出多个列,分别是 inserts/s commands/s vsize 和 %locked,与serverStatus的数据相对应. 还可以使用第三方插件进行数据库的监控.   […]

龙生   04 Apr 2015
View Details

详解Mysql安全配置

目录 1. 前言 2. Mysql账户权限安全 3. Mysql数据的网络安全配置 4. 密码策略安全 5. Mysql日志 6. Mysql数据库服务所在主机安全配置 7. 部署SQL注入检测、防御模块 8. mysqld安全相关启动选项 9. mysql备份策略 1. 前言 Mysql数据库安全配置、或者叫加固属于风险模型中的一环,它需要安全人员在理论和实践的学习中不断发现新的问题,并针对这些问题对数据的各个方面的配置进行强化。本文试图围绕着数据库风险识别、数据库安全加固这个问题,探讨可以采取的措施来最大程度的保证我们的数据库的安全控制处在一个较好的水平。 2. Mysql账户权限安全 mysql中存在4个控制权限的表,分别为 1. mysql.USER表 2. mysql.DB表 3. mysql.TABLES_PRIV表 4. mysql.COLUMNS_PRIV表 要注意的是,Mysql中有一个数据库"information_schema",似乎里面保存的也是一些权限信息,但是要明白的是,这个数据库"information_schema"是为系统管理员提供元数据的一个简便方式,它实际上是一个视图,可以理解为对Mysql中的一个信息的封装,对于Mysql主程序来说,身份认证和授权的信息的来源只有一个,就是"mysql"。 http://www.cnblogs.com/hzhida/archive/2012/08/08/2628826.html 0×1. mysql.USER表 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 select * from USER; desc USER; mysql> desc USER;+————————+———————————--+——+—--+———+——-+ | Field                  | Type                              | […]

龙生   31 Mar 2015
View Details

解决wordpress中文标签tag翻页404错误问题

前面有一篇文章已经介绍过中文标签打开404错误的解决方法《解决中文标签打不开404错误问题》,这个只能解决中文标签的问题,当同一个标签中文章较多的时候,就存在标签页面分页的问题了,发现如果仅按照上文的方法修改,标签页面分也无法正常打开,同样会有404错误的问题,下面提供几种方法解决标签tag页面中文分页404错误问题。

注意:别用windows自带的记事本修改(推荐UltraEdit,Dreamweaver,notepad++等)。


 

1、如果你已经修改过wp-includes目录中的classes.php,可以正常访问中文标签。

代码的140行左右,将

  1. $pathinfo = $_SERVER[‘PATH_INFO’];

替换为:

  1. $pathinfo = mb_convert_encoding($_SERVER[‘PATH_INFO’], “UTF-8″, “GBK”);

  1. $req_uri = $_SERVER[‘REQUEST_URI’];

替换为:

  1. $req_uri = mb_convert_encoding($_SERVER[‘REQUEST_URI’], “UTF-8″, “GBK”);

那么下面你只需要修改wp-includes目录中的link-template.php文件的(1425行左右)

  1. $result = $base . $request . $query_string;

替换为

  1. $result = $base . mb_convert_encoding($request, ‘UTF-8‘, ‘GBK’) . $query_string;

这种方式替换后的tag翻页里面含有中文,不符合url标准,不太利于搜索引擎收录,建议采用下面方法解决。


 

2、如果你什么都未修改,现在还无法访问中文标签tag。

可以通过安装插件iis-chinese-tag-permalink解决这个问题。

iis-chinese-tag-permalink下载地址:http://wordpress.org/extend/plugins/iis-chinese-tag-permalink/

这个插件函数很少只有几个替换函数而已,不会占用太多资源,如果你不想用插件,可以下载后把插件里面的几个函数拷贝到主题目录的functions.php中,本博就是采用这种方式。

 

from:http://www.52qingyin.cn/chinese-tag-page-problem.html

超详细mysql left join,right join,inner join用法分析

下面是例子分析 表A记录如下: aID        aNum 1           a20050111 2           a20050112 3           a20050113 4           a20050114 5           a20050115 表B记录如下: bID        bName 1            2006032401 2           2006032402 3           2006032403 4           2006032404 8           2006032408 创建这两个表SQL语句如下: CREATE TABLE  a aID int( 1 ) AUTO_INCREMENT PRIMARY KEY , aNum char( 20 ) ) CREATE TABLE b( bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , bName char( 20 ) ) INSERT INTO a VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ; INSERT INTO b VALUES ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3, '2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' ) ; 实验如下: 1.left join(左联接) sql语句如下: SELECT * FROM a LEFT JOIN  b ON a.aID =b.bID 结果如下: aID        aNum                   bID           bName 1            a20050111         1               2006032401 2            a20050112         2              2006032402 3            a20050113         3              2006032403 4            a20050114         4              2006032404 5            a20050115         NULL       NULL (所影响的行数为 5 行) 结果说明: left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL. 2.right join(右联接) sql语句如下: SELECT  * FROM a RIGHT JOING b ON a.aID = b.bID 结果如下: aID        aNum                   bID           bName 1            a20050111         1               2006032401 2            a20050112         2              2006032402 3            a20050113         3              2006032403 4            a20050114         4              2006032404 NULL    NULL                   8              2006032408 (所影响的行数为 5 行) 结果说明: 仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充. 3.inner join(相等联接或内联接) sql语句如下: SELECT * FROM  a INNER JOIN  b ON a.aID =b.bID 等同于以下SQL句: SELECT * FROM a,b WHERE a.aID = b.bID 结果如下: aID        aNum                   bID           bName 1            a20050111         1               2006032401 2            a20050112         2              2006032402 3            a20050113         3              2006032403 4            a20050114         4              2006032404 结果说明: 很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录. LEFT JOIN操作用于在任何的 FROM 子句中, 组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即 使在第二个(右边)表中并没有相符值的记录。 语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 说明:table1, table2参数用于指定要将记录组合的表的名称。 field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的 名称。 compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。   […]

龙生   27 Mar 2015
View Details

wordpress“您没有足够的权限访问该页面”

错误原因 WordPress程序可以通过设置不同的数据表前缀来实现一个数据库安装多个WordPress网站。 由于本地测试环境使用此方法同时安装了多个WordPress测试程序,在一次将网站数据库备份到本地并使用phpmyadmin修改完表前缀后出现“您没有足够的权限访问该页面”的错误提示。 出现这个错误是因为修改前缀不够彻底,某些数据表中字段的值也包含了之前的前缀。所以我们要一并将之前的前缀改为现用的前缀,问题即可得到解决。 解决方案  包含了前缀的数据表有两个:“前缀_options”和“前缀_usermeta”。本实例为:test_options和test_usermeta。  首先进入表test_options,使用phpmyadmin的搜索功能。搜索option_name字段,运算符选择:LINK%…%  值填入之前的前缀名:wp_ 得到如下结果:  将wp_user_roles修改为test_user_roles;并继续对表test_usermeta进行修改。同样使用phpmyadmin的搜索功能。搜索meta_key字段,运算符选择:REGEXP^…$  值填入之前的前缀名+.*:wp_.* 得到如下结果: 将所有以前前缀名:wp_开头(如:wp_capabilities,wp_user-settings,wp_user_level,wp_user-settings-time等)的字段全部改为现前缀名:test_(如:test_capabilities,test_user-settings,test_user_level,test_user-settings-time等) 至此问题解决完毕。 FROM:http://jingyan.baidu.com/article/e2284b2b3b5085e2e7118d47.html

龙生   19 Mar 2015
View Details

解决MySql Error Code: 2006 – MySQL 服务器已离线 错误

再用SQLYog进行10w用户数据sql导入的时候,出错,后查看日志找到错误代码为: MySQL 服务器已离线 后经过google发现时mysql设置的问题. 这个问题是因为MySql的默认max_allowed_packet过小所致,修改大一些即可 max_allowed_packet = 100M 另外,可以增加一下两个参数,来扩大相应时间 interactive_timeout=28800000 wait_timeout=28800000   from:http://blog.csdn.net/gumanren/article/details/8449794

龙生   19 Mar 2015
View Details

利用mysql的binlog恢复数据

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与master同步。 1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可 eg: [mysqld] …… log_bin = mysql_bin …… log_bin是生成的bin-log的文件名,后缀则是6位数字的编码,从000001开始,按照上面的配置,生成的文件则为: mysql_bin.000001 mysql_bin.000002 …… 配置保存以后重启mysql的服务器,用show variables like  '%bin%’查看bin-log是否开启,如图: 2.查看产生的binary log bin-log因为是二进制文件,不能通过记事本等编辑器直接打开查看,mysql提供两种方式查看方式,在介绍之前,我们先对数据库进行一下增删改的操作,否则log里边数据有点空。 create table bin( id int(10) primary key auto_increment,name varchar(255));(测试前我已经建表) insert into bin(name) values ('orange'); 1.在客户端中使用  show binlog events in 'mysql_bin.000001'  语句进行查看,为了排序美观,可以在结尾加\G使结果横变纵,此时结尾无需加;语句结束符。 eg: mysql> show binlog events in 'mysql_bin.000001’\G ……………省略…………… *************************** 3. row *************************** Log_name: mysql_bin.000001 Pos: 174 Event_type: Intvar Server_id: 1 End_log_pos: 202 Info: INSERT_ID=2 *************************** 4. row *************************** Log_name: mysql_bin.000001 Pos: 202 Event_type: Query […]

龙生   12 Nov 2014
View Details
1 27 28 29 40