从MySQL 4.0. 到 MySQL 5.0. 升级完毕

主要是这个Wordpress 2.9版要求数据库在4.1以上,so只好转移到新的空间用高级版本的MySQL。
下面是我这次转移过程:
1、使用帝国备份王备份数据库(由于是从4.0的升到4.1以上的,需要指定字符集utf8后备份),同时使用程序自身备份(dz,uch,uc)。
2、找空间商梦游帮打包转移到新空间。
3、省略
4、使用帝国备份网恢复备份的数据库,出现错误

Fatal error: Call to undefined function E_D()

现在看来可能是目录权限问题(没有验证)。

5、于是又回去指定字符集utf8备份数据库,下载,上传,恢复,乱码!
连续弄好几次,终于找到窍门!那就是使用 phpMyAdmin 对相应数据库设定 字符集后,然后恢复指定字符集的数据库。
具体操作(登录phpMyAdmin 选择或建立数据库 —— 操作—— 整理,选择一个编码,我选的是 utf8_unicode_ci ——执行 ——然后进入帝国备份王恢复相应数据库。)
中在phpMyAdmin中指定字符集是解决乱码的关键之一,只有备份的字符集设定与phpMyAdmin中设定一样才不会导致乱码出现。如果你的全是英文内容,就不需要这么麻烦了!

折腾11个数据库转换将近弄了5个小时!还好都不大,主要是上传啊,下载啊费时间!

6、使用帝国备份的同时为了备份一次成功,曾使用faisunsql(每个数据库都需要配置一次密码什么的,相对麻烦)备份,问题是没有在phpMyAdmin中修改数据库字符集。也是导致乱码。后来就放弃使用 faisunsql 全用帝国备份王完成备份恢复的。

现在这个博客就是从 MySQL 4.0 转换到 MySQL5.0 的 :)。

早先在论坛看的一个转换教程,当时没仔细看,也是导致自己折腾那么久的原因之一!吸取教训。。

再仔细看看 MySQL 4.0. 和 MySQL 5.0.(MySQL 4.1以上版本) 的区别就在于 MySQL 4.0没有默认字符集,而MySQL 4.1以上版本有!

看对比截图
MySQL 4.0. 和 MySQL 5.0.(MySQL 4.1以上版本) 的区别

附注(论坛的教程):

在MYSQL4的服务器上新建目录,如faisunsql,并设置此目录属性为777,上传faisunsql
并将此目录下的所有文件设置为777,打开http://你的域名(clin003.com)/faisunsql/index.php
填写数据库连接参数,开始导出
如DISCUZ!的编码为GBK,指定为GBK,分包,设定密码
开始导出
导出完毕从MYSQL4的旧服务器下载刚备份的所有文件,注意,要使用FTP下载
上传到新的MYSQL5服务器,在空间管理后台新建一个数据库,然后用phpmyadmin登陆新数据库
从左边的数据库选择您刚创建的数据库名称,进入,再点击右边的”操作”,在下面有一个”整理”

GBK对应的是gbk_chinese,然后点执行,OK
从IE访问刚备份的文件,填写新的数据库配置,然后导入,即可
http://你的域名(clin003.com)/faisunsql/youdataname/

Fedora 12 下 Mysql 非正常关闭导致不能启动解决办法

使用 “service mysqld start”启动时提示:

# service mysqld start
Timeout error occurred trying to start MySQL Daemon.
正在启动 MySQL:                                           [失败]

这个似乎看不出什么原因。

非正常关闭 Mysql 的操作是这样的:

1、使用 “service mysql stop” 关闭 Mysql 。

2、到 “/usr/libexec/” 目录下 带参数 或不带参数启动 mysql 服务(“./mysqld –user”)。

3、使用 “ps aux” 找出 “./mysqld –user” 进程的 PID。

4、使用 “kill -9 PID” 杀死进程。

这样之后使用”servive mysqld start”就启动不了啦,就出现开始的提示信息啦。

下面就简单描述下问题解决过程:

由于 Fedora 12 的服务启动脚本在 “/etc/init.d”目录下,于是打开 “Mysql”脚本 。

从以下内容

get_mysql_option mysqld_safe log-error “/var/log/mysqld.log”

发现 Mysql 的错误信息日志是记录在 “/var/log/mysqld.log” 里边

于是打开 “/var/log/mysqld.log” 观察,发现以下记录

091120 23:55:20 [ERROR] Can’t start server : Bind on unix socket: Address already in use
091120 23:55:20 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
091120 23:55:20 [ERROR] Aborting

091120 23:55:20  InnoDB: Starting shutdown…
091120 23:55:21  InnoDB: Shutdown completed; log sequence number 0 44233
091120 23:55:21 [Warning] Forcing shutdown of 1 plugins
091120 23:55:21 [Note] /usr/libexec/mysqld: Shutdown complete

091120 23:55:21 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

原来是发现有另外一个 “Mysql” 服务进程在运行,于是就自动退出啦!

这下原因基本搞清楚啦,就算因为 “/var/lib/mysql/” 目录有标记 “Mysqld” 进程存在的文件!

删除 “/var/lib/mysql/mysql.sock”,然后使用 “service mysqld start” ,提示:

# service mysqld start
正在启动 MySQL:                                           [确定]

至此问题解决。。

附注:安装 Mysql

首先使用 “yum search mysql”

发现 “mysql-server.i686”

使用 “yum install mysql-server.i686 ”进行安装

默认 root 密码为空。

修改 root 密码为 在终端下 使用 “mysqladmin -u root password ‘new-password’ “进行修改。

提示找不到my-template.cnf

换啦win2003,不想重新去下载mysql啦,于是就重新配置遍mysql,运行/bin/MySQLInstanceConfig.exe

快完啦的时候,提示找不到my-template.cnf,其实此文机是以ini文件的形式存储在mysql的根目录下,所有*.cnf文件在windows下,就是*.ini文件,mysql查找路径不对,所以我们在安装mysql的根目录可以看到my-template.ini文件.

可以使用修改注册表的方式,运行regedit找到下面项目:

“HKEY_LOCAL_MACHINE/Software/Mysql AB/Mysql server 5/location”

把改为”E:mysqlmysql server 5.0″(当然要根据你机器的mysql的安装路径 🙂 比如我的:D:\mysql\

参考文章:http://www.blogjava.net/supperchen/archive/2008/08/04/220052.html

Can’t connect to local MySQL server through socket

Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (13) Errno.: 2002

解决办法:
#chown -R mysql:mysql /var/lib/mysql

[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost lib]# mysqladmin -uroot password ‘123456’
[root@localhost lib]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.1.11
//ok,myblog:http://clin003.com/
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer