Mysql Error: No database selected

一个网站的mysql数据库(Server version: 4.1.22-standard; MySQL client version: 4.1.22)的负担太重被空间商临时关闭了账号。恢复后出现了一个令人啼笑皆非的错误:Mysql Error: No database selected。检查数据库的用户名和密码以及数据库名称并没有异常。联系空间商,他们也说没有暂停mysql账号。再检查所有文件的完整性,也一切正常。这就奇了怪了哦!根据webdeveloper论坛上的解释:
the database was not selected because the user did not have permission to select it. 应该是mysql账号的权限无法读取数据库。
郁闷的是为什么mysql账号没有权限会出现“No database selected”的错误,给人错误的指引和误导。而不是提示“No permissions for that database”。或者是有什么没有遇见过的特殊情况,继续跟进中。。。
更新:暂时解决办法:放弃旧账号,创建新账号,问题解决。

编译php5.2.5遇到Mysql的奇怪错误

Mysql版本是MySQL 4.1.0-alpha-log,出现如下错误:
ext/mysql/php_mysql.o(.text+0×300): In function `zm_startup_mysql’:
/root/new_soft/php-5.2.5/ext/mysql/php_mysql.c:405: undefined reference to `mysql_server_init’
ext/mysql/php_mysql.o(.text+0×31f): In function `zm_shutdown_mysql’:
/root/new_soft/php-5.2.5/ext/mysql/php_mysql.c:426: undefined reference to `mysql_server_end’
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
在网上搜索了一下,没有找到合理的解释,5.2.4中有这样一个BUG,不过应该已经修补好了吧。难道是mysql版本的问题?

WP升级测试

这是一个升级测试!
今天有空把WordPress从2.04升级到2.3.1,默认的数据库字符是latin1,升级后出现乱码,因为wp-config.php里面多了
define(’DB_CHARSET’, ‘utf-8′);
define(’DB_COLLATE’, ”);
这两行,按照网上的办法,把utf-8去掉,问题解决。具体原因尚不清楚,有空再看看。
更新:关于Character Set和Collation (Collation是“整理”的意思,用于不同字符的比较,排序等,如按字母或汉语拼音排序)

一个Character Set都可以对应多个Collation,并且有默认的Collation
以_ci结尾的Collation,是不区分大小写(Case- Insensitive)的
以_cs结尾的Collation,是区分大小写(Case-Sensitive)的
以_bin结尾的 Collation,是二进制(Binary)的。

关于如何修改Collation
对于新建Column:
ALTER TABLE tbl_name
[DEFAULT CHARACTER SET character_set_name] [COLLATE collation_name]
对于所有新建table
mysqld –default-character-set=gbk –default-collation=gbk_chinese_ci
这是常用的Character Set和Collation
mysql> SHOW CHARACTER SET;
+———-+—————————–+———————+——–+
| Charset | Description | Default collation | Maxlen |
+———-+—————————–+———————+——–+
| big5 | […]