Duplicate entry ‘localhost-‘ for key 1

导致这个错误的原因:
因为安装系统时设置了hostname为localhost导致mysql在创建表的时候没有创建成功。因此mysql库中user表里没有root这个用户或者说root没有显示出来,无法查看root的状态。这时需要手动创建。然而在安全模式无法直接创建用户,错误见下。
变个方向就能创建了,先给root给予权限,然后刷新表。之后就可以创建了。
一、killall -TERM mysqld
以安全模式启动mysql
/usr/bin/mysqld_safe –skip-grant-tables &
进入mysql
/usr/bin/mysql
mysql> use mysql
Database changed
mysql> select * from user where user=’root’;
Empty set (0.00 sec)

mysql> grant all privileges on *.* to root@localhost identified by ‘linuxtone’ with GRANT OPTION;
ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute

this statement
mysql> update user set password=password(‘linuxtone’) where user=’root’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

注意单双引号。

mysql> flush privileges;   //注意先刷新下表
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to root@localhost identified by ‘linuxtone’ with GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from user where user=’root’;

后期处理:
/usr/local/mysql/bin/mysqladmin shutdown -uroot -p
刚才的密码
然后正常启动:/usr/bin/mysqld_safe &
/usr/local/mysql/bin/mysql -uroot -p
能正常登录!

二Duplicate entry ‘localhost-‘ for key 1 问题,很可能是你的主机名有问题,比如是localhost?
导致mysql 的root 帐号的三个主机值(分别是%、localhost、主机名)的后二者的名字弄成一样了,导使唯一键值出现重复而禁用该记录了?
朋友的主机名设置成了:localhost 遭成了Duplicate entry ‘localhost-‘ for key 1

设置好正确的主机名仍后重新编译就可以了,朋友安装系统的时候没有注意主机名

Tags: ,

用工具提高效率 解决 PhpMyAdmin 乱码

最近做的项目有点特殊,多人共用开发服务器,无法搭建个人独享的开发环境。

连数据库,不能使用客户端的 GUI 工具,本来我已经离不开 SQLyog 了,现在逼我用命令行,我怎么受得了?

欣慰的是,尽管 MySQL server 虽然不在开发服务器上,也没有 root 权限给我的 IP 做授权,但开发服务器的 IP 是在授权列表内的。

我又想起了 PhpMyAdmin 这个好久不用的工具。

在 Dev server 上装好,配好用户名和密码,然后即可访问 MySQL,不过又遇到新问题!

MySQL server、Database、Table 和 Column 的字符集都是 latin1,而写入数据库的字符是 GBK。虽然设计不够合理,但也算勉强能用,用 SecureCRT 的命令行连接 MySQL,是可以看到正确的中文字符的,因为 SecureCRT 设置的是默认的字符集。

但 PhpMyAdmin 却总是乱码!

查了下 Variables 标签,有 2 个关于字符集的高亮提示,意思是全局设置是 latin1,但 character set client 是 utf8。

任凭我怎么改 MySQL connection collation 的设置,都无效。

tail 了一下 MySQL query log,看到 PhpMyAdmin 总是发送

SET CHARACTER SET ‘utf8’
SET collation_connection = ‘utf8_general_ci’

这 2 条语句!

我又 grep 一下,看到有个文件中的代码,让这 2 条语句被强制执行!

解决 PhpMyAdmin 字符乱码问题 所述的方法修改,即刻解决问题!

这下又能高效的访问 MySQL 啦,我相信打字再快的人,输入一条 Select 语句也没有我点击一下鼠标快!

Tags:

phpDocumentor PHP 文档生成 CHM

好久没写新东西了。

最近遇到很头疼的事,好多代码要维护,时间长了,自己写过的代码都想不起来。

要调用某个对象的方法,每次都要打开那个类定义的 PHP 文件,找到方法的定义部分,然后仔细看看参数列表才能想起来怎么用。

最麻烦的是,有时候想不起来那个方法是在哪个类里面定义的,必须得去代码根目录 grep ,然后等半天……

相对比的,我开发程序时,手边必备的几个文档:PHP手册、MySQL手册、HTML手册、CSS手册、Javascript手册,以及最近开始用的 ActionScript手册。这些都是 chm 版本的!

Chm 帮助文件有 2 个最大的好处,一个是索引,另一个是全文检索。

用索引可以一边输入,一边过滤掉不匹配的关键词,迅速定位到想要的那个函数名。

当不知道关键词是什么的时候,可以用 like 语句在 chm 文件里面的每一句话中匹配关键词。

原本,用 Zend Studio 也有代码提示和自动完成,不过这个用 Java 虚拟机运行的 IDE 实在是慢,受不了,也不习惯。

今天花了好长时间,研究 php 文档生成工具,找到了几个,主要都是生成 html 页面的,而且格式很难看,重要的是没有好用的索引,更没有全文搜索,没意思。

PhpDocumentor 支持 chm 生成,这个让我眼前一亮!

简单看了下官方文档,然后就下载了 zip 格式的压缩包,就是这个压缩包,浪费了我好长时间去调试错误!!

设定好 php 源码路径,再设置文档格式,选择 chm,输出了一堆文件,包含 hhc,hhp 等,这些是 chm 的“源码”,需要用 Windows 自带的 HTML Help WorkShop 进行编译,然后才能生成 chm。

而那个 zip 压缩包,居然是有严重 bug 的版本,生成的 hhc 文件,里面有一行错误代码,提示 contents.hhc.tpl 找不到!!!

最开始我没有意识到问题在这里,只是用 WorkShop 反复编译那堆 hhc 文件,总是不成功!我都有放弃的念头了。

后来仔细看错误提示,好像是 hhc 文件的问题,打开一看,才知道是上述原因。

再去 phpDocument 源码里面找 contents.hhc.tpl,真的没有!不过,却有 contents.hhc.tp 这个文件!!!

然后列了下目录,几十个文件,大部分都是 tpl 扩展名,而有几个文件是 tp!!!

靠!什么玩意儿,是程序员马虎了还是打包工具的问题?

重新下了个 tgz 版本的 phpDocument,问题全无,chm 编译顺利!

另外,默认编译的 chm 是不带搜索(全文检索)功能的,更改方式如下:

打开一个项目文件,单击“Project(项目)”选项卡的“Change project options(改变项目选项)”,在“Options(选项)”对话框的“Compiler(编译)”选项卡中选中“Compile Full Text Search Information(编译全文搜索信息)”即可。

附赠命令行范例:

$> php phpdoc -o CHM:default:default -d ../lib/ -t ../docs/ > ../php_doc.log

Tags:

纠结与释怀

这几天的纠结让我度日如年,伴随我的是焦虑和失眠。好久没有这样的感觉了。

我总是患得患失,这是一种心理问题,在做选择的时候,反复对比各方的优劣,放不下东,也舍不得西。

自己不知道怎么选择,然后反复问家人和朋友,即使问到答案,也不能让自己安心顺从。

幸运的是,在反复纠结之后,我逐渐想明白了一些道理。

选择,就要付出代价,必定有所得有所失,我应该勇敢承担起责任,坦然面对自己的选择带来的变化和影响。

纠结的时候,我感觉自己是个懦弱的人,害怕犯错,害怕不好的结果。

现在,我鼓起勇气,自己做出选择,不管对错,我接受,不后悔。

我要感谢猛哥,花费很多时间和精力,前后沟通,给我提供了非常难得的机会,在我最终没有选择这个机会的时候,仍然支持我的选择,并告诉我他这里的大门永远向我敞开。

此时,时间像突然停止了一样,飞快打字的手,也一下停住了,我反复看着这句话,感觉到眼眶周围热热的,滑滑的……

我想我的勇气,多半来自于猛哥对我的关照。

我只求将来有机会能够报答猛哥的知遇之恩。

是时候为自己的选择努力工作了,大家一起加油!

Tags:

svn: Can’t convert string from ‘UTF-8’ to native encoding

svn 版本库中有文件是以中文字符命名的,在 Linux 下 checkout 会报错:

svn: Can’t convert string from ‘UTF-8’ to native encoding

然后 checkout 程序就退出了!

解决办法很简单,正确设置当前系统的 locale:

export LC_CTYPE=“zh_CN.UTF-8”

然后重新 checkout 即可。

注意,根据你的系统字符集设置变量,如果 zh_CN.UTF-8 不行,有可能要改成 GB2312:

export LC_CTYPE=”zh_CN.GB2312″

另外,看别人的帖子,有的变量名不同,用的是:

export LANG=“zh_CN.UTF-8”

我没这么用,下次遇到问题再说了。

Tags:

Action Script FlashBug

最近搞了下 Flash 的 Action Script,水挺深的,完全外行。

遇到一个跨域的问题,域名 front.com 调用 static.net 上面的 flash.swf,由于权限问题导致 Flash 提供的方法不能被 Javascript 调用。

问了一个专门搞 Flash 的“专家”,看了下我调用的代码,抓耳挠腮搞了半天没搞明白,最后给了个结论:你不能引用 dev.cn 上面的 flash.swf,因为跨域,改成 static.net 域名的就好了。

邪了门了!我问:那不一样还是跨域么,dev.cn 跟 static.net 都是跨域,有区别吗?

那 2B 回答道:static.net 都有问题,dev.cn 就更有问题了!

我 TMD 晕死算了!心说怎么碰上你这么个 SB!不会就说不知道,还能少耽误我点时间。装了半天孙子,给出这么一个 SB 结论!

背景资料,我虽然不会开发 Flash,但也知道有 crossdomain.xml 这么个配置文件。我已经用 md5 验证过 dev.cn 和 static.net 都包含此文件且内容严格一致!

后来还是另一位自称“初学者”的兄弟帮我找到了问题,还教了我很多查问题的方法。

比如,在 Firefox 上装一个 FlashBug 插件,再下载一个 Flash Debug Player 10,安装完成后重启 Firefox,就可以输出 Flash 的 trace 信息。

在开发 Flash 的时候,在关键点用 try catch 和 trace 可以确定问题。

果不其然,通过日志发现 ExternalInterface 未定义,然后再看 fla 文件的属性,原来是 version 设置成 Flash Player 6 了,改成 8,再编译,问题立刻消失!

现在心情不错,不仅解决了问题,还学到了解决问题的方法,哈哈~~

Tags:

今天结婚啦 2010-01-20

今天领证了,忙忙叨叨一天,趁今天还没过去,赶紧写点东西纪念一下。

经历了两年半的感情,总算有了新的起点。

很久以前就准备好的 xuyao-liulikang.cn 的域名,今天也可以正式开通了。

搭建好 WordPress 并写了第一篇文章后,发给了 Yoyo,让她很是感动呢。

我们把幸福都记录在这里,也许多年以后,回忆起走过的每一天,可以更感动。

这里是入口:记录我们的幸福

另外,电话里和开心网上,收到了很多朋友们的祝福,再次感谢所有亲爱的朋友们,谢谢你们!

愿每个人都能找到心爱的另一半,一起走过幸福的一辈子。

Tags:

我心底的爱情童话

我是个在北京长大的八零后,在北京工作这几年,感受到了很多与外地在京工作的朋友不一样的地方。

我不用租房子,不用攒钱买房子。

按理说,稍微努力找个好点的工作,做个月光族挺好。

再找个北京女孩,谈几年恋爱,结婚生子,享受小资生活,真挺好。

有句俗话:老婆孩子热炕头,也许就是对这种生活的简单总结。

我喜欢另一种有点像童话的故事。

2006年大学毕业,小强和小娟,一起从外地来到北京。看着最低 2W 起价的房子,两个人一起低下了头。以他们的收入,只能在南四环外某居民区租下一间10平米的小屋子。用攒了2个月的工资付完租金后,他们一起来到小区门口的成都小吃,每人吃了一碗牛肉面。回到刚租到小家里,小强对小娟说:“相信我,几年以后,我会赚到钱,买一套属于我们自己的房子。到时候,我们就结婚吧,你愿意嫁给我吗?”小娟看着小强那坚定的眼神,幸福地点头答应。

从那以后,是漫长的平淡而艰苦的生活。在这10平米的小屋子里,有掉皮的墙,有破损的小写字台,有窄窄的小双人床;有欢笑,有哭泣;有甜言蜜语,也有争吵不休。

但自始至终,一直陪伴他们的,是那份追逐梦想的信念!

她能看到的,是每天写程序到深夜的坚持不懈的他。

他能看到的,是每天给予关心支持的不离不弃的她。

幸运的是,经过 4 年的艰苦努力,小强的付出,终于有所回报。

两个人靠自己的努力,攒下了郊区一套一居室小户型的首付款,他们终于实现了自己的梦想。

小强实现了 4 年前的诺言,小娟也如约答应了小强的求婚,他们终于开始了自己的幸福。

本来,这是个喜剧式的结尾,到此可以结束了。

我要继续写完这个故事:小强的踏实努力的性格,让他在事业上的发展如日中天。没过几年,他们的经济实力不仅超越了小康小资,更是达到了中产阶级水平。但是,小强并没有像大多数事业有成的人那样,开始勾三搭四,小三儿成群。他一直用心爱护着小娟。

我想,正是她在那最艰苦的几年中的不离不弃,彻底感动了他。他知道今日的所成事业,离不开她那份漫长而坚定的信心和支持。

他们可以一起慢慢变老,一起携手走过一辈子。

故事可以结束了。

像童话么?我想这应该是很多北漂夫妻中比较成功的案例的故事原型吧。

虽然我是北京长大的,但在我心底,一直有一个如此感人的童话爱情梦。

2009 一路走好

时间,总是一去不返,几分钟以后,我们将永远告别 2009。

这一年,我经历了很多,学到了很多,成长了很多,当然,也留下了很多。

这 365 天,留下的记忆,我会好好保留。

向前看,总是令人期待;向后看,总会令人惆怅。

谢谢你,2009!

一路走好!