0%

你试试看把D2Loader.exe这个文件列入DEP的例外应该就可以了。具体方法如下:
打开“计算机-属性-高级系统设置”中的“高级”选项卡,点击“性能”下面的“设置”按钮,切换到“数据执行保护”选项,勾选“为除下列选定程序之外的所有程序和服务启用”,最后点击“添加”按钮找到并添加中文执行程序。

如果还不可以的话,就直接关掉DEP,方法如下:
从“开始”-“所有程序”-“附件”中找到“命令提示符”,右键选择“以管理员身份运行”,输入“bcdedit.exe/set {current} nx AlwaysOff”(不包含引号),回车,出现“操作成功完成”,然后重启计算机,这样便彻底关闭了DEP,若日后想要重新开启DEP,在命令提示符中输入“bcdedit /set {default} nx Optin”,回车并重启计算机即可。

http://www.cpan.org/modules/by-module/DBD/ 找到最新的版本,现在最新的为DBD-mysql-4.020.tar.gz
开始下载安装:

1
2
3
4
5
6
wget http://www.cpan.org/modules/by-module/DBD/DBD-mysql-4.020.tar.gz
tar xzvf DBD-mysql-4.020.tar.gz
cd DBD-mysql-4.020
perl Makefile.PL –mysql_config=/usr/local/mysql/bin/mysql_config
make
make install

请确保mysql_config的路径正确。

command comment
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 # 查找在系统中最后24小时里修改过的文件
find / -cmin -5 # 查找在系统中最后5分钟里被改变状态的文件
find / -ctime -1 # 查找在系统中最后24小时里被改变状态的文件

访问过用amin,修改过用mmin,文件状态改变过用cmin
精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
在5分钟之内的用-5,在5分钟以上的用+5

10表示 =10
-10表示 <=10
+10表示 >10

>=10 可以用大于或等于 \( -cmin +10 -o -cmin 10 \)
< 可以用 不大于等于表示 \! \ ( -cmin +10 -o -cmin 10 \)

1
2
3
4
5
6
7
8
mysql> select updated_at,DATE_ADD(updated_at,INTERVAL 1 SECOND) from fs_thread limit 2;
+---------------------+----------------------------------------+
| updated_at | DATE_ADD(updated_at,INTERVAL 1 SECOND) |
+---------------------+----------------------------------------+
| 2008-10-09 10:22:32 | 2008-10-09 10:22:33 |
| 2008-10-12 23:53:04 | 2008-10-12 23:53:05 |
+---------------------+----------------------------------------+
2 rows in set (0.00 sec)

在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:

位置参数:

详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样啦

$0, $1, $2,等等…

位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.
(具体见Example 4-5 和Example 11-15)
$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出

$#

命令行或者是位置参数的个数.(见Example 33-2)
$*
所有的位置参数,被作为一个单词.
注意:”$*”必须被””引用.

Read more »

MySQL Replication复制可以是基于一条语句(Statement level),也可以是基于一条记录(Row level),可以在MySQL的配置参数中设定这个复制级别,不同复制级别的设置会影响到Master端的bin-log记录成不同的形式。

Row Level:

日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。

优点:

在row level模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row level的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题。

缺点:

row level下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:update product set owner_member_id = ‘b’ where owner_member_id = ‘a’,执行之后,日志中记录的不是这条update语句所对应额事件(MySQL以事件的形式来记录bin-log日志),而是这条语句所更新的每一条记录的变化情况,这样就记录成很多条记录被更新的很多个事件。自然,bin-log日志的量就会很大。尤其是当执行alter table之类的语句的时候,产生的日志量是惊人的。因为MySQL对于alter table之类的表结构变更语句的处理方式是整个表的每一条记录都需要变动,实际上就是重建了整个表。那么该表的每一条记录都会被记录到日志中。

Read more »

MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:

  • 都可以实现生成唯一值的功能;
  • UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯一值,且需要搭配使其为唯一的主键或唯一索引;
  • 实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增长的;
  • UUID产生的是字符串类型值,固定长度为:36个字符,而自增序列产生的是整数类型值,长度由字段定义属性决定;

接下来,详细讲解下UUID()函数产生的值

1
2
3
4
5
6
7
oot@localhost : (none) 06:09:40> SELECT UUID(),UUID(),LENGTH(UUID()),CHAR_LENGTH(UUID())\G
*************************** 1. row ***************************
UUID(): de7ee638-4322-11e0-85ab-842b2b4a7e75
UUID(): de7ee642-4322-11e0-85ab-842b2b4a7e75
LENGTH(UUID()): 36
CHAR_LENGTH(UUID()): 36
1 row in set (0.00 sec)

从上面的执行结果部分的信息看

Read more »

今天在linux中启动mysql时提示mysql Starting MySQL…The server quit without updating PID file

从网上找了一堆方法如下:

  1. 可能是pid文件没有写的权限
    解决方法: 给予权限,执行 chown -R mysql:mysql datadir 然后重新启动mysql

  2. 可能进程里已经存在mysql进程
    解决方法: 用命令ps -ef|grep mysqld查看是否有mysqld进程,如果有使用kill -9 进程号杀死,然后重新启动mysql

  3. 可能是第二次在机器上安装mysql,有残余数据影响了服务的启动
    解决方法: 去mysql的数据目录看看,如果存在mysql-bin.index,删除并重启mysql试试

  4. mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)
    解决方法: 请在[mysqld]下设置这一行:datadir = /opt/data

Read more »

使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错。

  • 如设置 replicate_do_db=test

    1
    2
    3
    use mysql;
    update test.table1 set
    ……

    第二句将不会被执行

  • 如设置 replicate_ignore_db=mysql

    1
    2
    3
    use mysql;
    update test.table1 set
    ……

    第二句会被忽略执行

原因是设置replicate_do_db或replicate_ignore_db后,MySQL执行sql前检查的是当前默认数据库,所以跨库更新语句被忽略。
可以使用replicate_wild_do_table和replicate_wild_ignore_table来代替

如:
replicate_wild_do_table=test.%replicate_wild_ignore_table=mysql.%

这样就可以避免出现上述问题了