mysql数据库还原出错ERROR:Unknown command '\\'解决手记

使用mysql命令行客户端,使用source导入备份文件,但导入中出错,

ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.

并且直接出现win32程序错误的提示,mysql客户端自动退出。

上网查询有人说是编码问题,在连接服务器端时命令中指定编码,如下形式

>mysql -uroot -pxxxxxx --default-character-set=utf8

要还原的数据库本身是gbk编码,但备份文件是utf-8,于是在连接时指定为gbk,但导入中照样出错。于是改用utf-8,出上命令行所未,居然好了,完全导入成功,2G多的数据库。

看来mysql的字符编码问题还要多多了学习,有点深奥。

是为手记20110526

------ 后记 20110603-------------------

一定要在连接mysql时,使用--default-character-set=utf8 参数,而不是在连接后使用 set names utf8 ,经测试,这样不行的。

windows下mysql自动定期备份并压缩/以discuz论坛为例

工作环境 Windows Server 2003 ,MySQL安装目录 D:\Program Files\MySQL\MySQL Server 5.0 , WinRAR 安装目录 C:\Program Files\WinRAR
备份数据存储的路径为 E:\dataBackup\MySQL .下面即是windows命令行批处理命令的源文件

代码如下:

set d=%date:~0,10%
set d=%d:-=%
set t=%time:~0,8%
set t=%t::=%
set dzxpath=dzx%p%%d%%t%.sql
set ucpath=uc%p%%d%%t%.sql
set folder=E:\dataBackup\MySQL\
echo off

"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -hlocalhost --opt -uroot -pyoumysqlrootpassword discuzx > "%folder%%dzxpath%"
"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%folder%%dzxpath%".rar "%folder%%dzxpath%"
"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -hlocalhost --opt -uroot -pyoumysqlrootpassword discuzuc uc_admins uc_applications uc_badwords uc_domains uc_failedlogins uc_feeds uc_friends uc_mailqueue uc_memberfields uc_members uc_mergemembers uc_newpm uc_notelist uc_pms uc_protectedmembers uc_settings uc_sqlcache uc_tags uc_vars > "%folder%%ucpath%"
"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%folder%%ucpath%".rar "%folder%%dzxpath%"
rem echo "D:\Program Files\MySQL\MySQL Server 5.0\data\discuzx\%filepath%"

"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -hlocalhost --opt -e --max_allowed_packet=1048576 --net_buffer_length=16384 -uroot -pyourrootpasswd discuzx > "%folder%%dzxpath%"
rem "C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%folder%%dzxpath%".rar "%folder%%dzxpath%" 

"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -hlocalhost --opt -e --max_allowed_packet=1048576 --net_buffer_length=16384 -uroot -pyourrootpassw mydb > "%folder%%mydbpath%"

"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%folder%%mydbpath%".rar "%folder%%mydbpath%"  "%folder%%dzxpath%"
rem echo "D:\Program Files\MySQL\MySQL Server 5.0\data\discuzx\%filepath%"
rem pause

----------------------

可以直接下载该.bat批处理文件: mysql_dump

这里需要使用winrar,假定安装在 C:\Program Files\WinRAR\ 上面代码里使用的是 rar.exe 这个命令行版的rar工具(推荐),而不是winrar.exe这个图形化版本。当然要检查你的winrar安装目录里是否有rar.exe这个文件,如果没有,建议重新下载完整版的winrar.

这里假定需要备份数据库discuzx与discuzuc中的几个表(ucenter表) [如果升级安装discuzx,而又没有把ucenter导入discuzx的库里,就是这种情况]

把上面的命令保存为 mysql_dump.bat ,双击即可运行。为了实现无人值守的自动化处理,可以通过系统的任务计划定期执行这个命令。

如不会windows任务计划请自行搜索学习,这里恕不赘述。

MySQL/phpmyadmin问题解决手记:#2002 - 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)

在fedora 12下使用自己从源代码编译的mysql使用,安装过程很麻烦,但好在运行正常。

之前使用windows下mysql/phpmyadmin,到linux下,当然也少不了,整个phpmyadmin,包括配置文件都是从windows下直接拷贝来的,但连接数据库总是出错:

#2002 - 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)

连接远程数据库,就是虚拟主机数据库服务器却是没有问题的。使用linux终端连接

mysql -h127.0.0.1 -uroot -p

也没有任何问题。

而ping localhost,返回也是正常的,说明linux知道localhost就是本机的。

[root@localhost www]# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.077 ms
^C
--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2697ms
rtt min/avg/max/mdev = 0.062/0.071/0.077/0.011 ms

感觉很怪异,google一下,有这样的解决方案:

要将 config.inc.php 中
$cfg['Servers'][$i]['host'] = ’localhost’;
改成 $cfg['Servers'][$i]['host'] = '127.0.0.1';
还要添加
$cfg['Servers'][$i]['hide_db'] = 'information_schema';//使用登陆后看不见information_schema数据库

于是把配置文件里的host改成127.0.0.1,再连接,好了,连接正常。($cfg['Servers'][$i]['hide_db'] = 'information_schema';这一句加不加都无所谓,不影响连接数据库)

为什么在linux下localhost就是不能连接呢?查mysql官方文档[参看这里],看到有这样的句话:

如果未指定指定主机名或指定了特殊的主机名localhost,将使用Unix套接字。

Unix套接字默认为/tmp/mysql.sock,而本机并没有配置这样的套接字文件,所以自然是连接失败了。

官方文档确实非常重要,比网上的一般的解决方法都更权威有效得多。

MySQL错误:Incorrect file format/数据表“使用中”解决手记

硬盘出错,windows开机自动执行磁盘查检。开始工作时,web程序运行异常,有这样的信息:

130: Incorrect file format xx_messages'

看来是MySQL表损坏了,到phpmyadmin里,这个表显示状态为“使用中”,工具栏里的“操作”里,找“修复表”,但奇怪的是没有这一项,只有“强制更新表 ("FLUSH") ”(看来问题还是比较严重的),点了照例提示错误: Incorrect file format 'xx_messages'
google一下,有不少人也遇到这样问题,解决方法当然都是说修复表之类的,那直接运行SQL命令。在phpmyadmin里运行:
check table xx_messages;
analyze table xx_messages;
repair table xx_messages;
结果还是没用,照例“ Incorrect file format 'xx_messages'”
看来网上的说法不见得能解决我的问题,求人不如求已,自己解决。
到mysql数据库目录时,看看文件是不是正常,要不然就把以前备份的导进去。
该表相关的三个文件,xx_messages.MYI 的文件大小是0,看来是索引坏了,从以前的备份文件里,直接拷出来,替换这个0大小文件(其它两个文件没有替换),phpmyadmin提示错误

#1194 - Table 'bne9pb_messages' is marked as crashed and should be repaired

肯定是索引问题,昨天对表结构做过修改,用老的索引文件,肯定不对的,那就修复表:

repair table bne9pb_messages;

问题解决。不过所有数据都没有了,成了空表,这无所谓,反正是本地开发用的;如果是服务器上的表的话,一定要事先备份的,不然真的欲哭无泪的。

这次只是索引文件坏了,如果数据文件都坏了,那就只能根据旧数据备份重新改动了。

仅仅索引坏掉,其实运行
REPAIR TABLE xx_messages  USE_FRM;
应该就可以解决了;这样应该还可以保留原有数据不丢失,不过没有试,这次没做坏文件备份,没法再捣腾捣腾。

linux下Mysql+php5+apache安装手记

下载官方推荐的稳定版本httpd-2.2.3.tar.gz,下载地址:http://down.itlearner.com/soft/2356.shtml

安装apache2
#./configure --prefix=/usr/local/apache2 --enable-module=alias --enable-module=most \
--enable-module=vhost_alias --enable-shared=vhost_alias --enable-module=so --enable-shared=max
# make;make install

--------------------------------------------------------------

下载目前最新稳定版本mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
无需安装,解压后移至/usr/local/mysql.

# groupadd mysql #建立mysql组
# useradd mysql -g mysql #建立mysql用户并且加入到mysql组中

# cd /usr/local/mysql

然后设置权限

# chown -R root . #设定root能访问/usr/local/mysql
# chown -R mysql data #设定mysql用户能访问/usr/local/mysql/data ,里面存的是mysql的数据库文件
# chown -R mysql data/. #设定mysql用户能访问/usr/local/mysql/data下的所有文件
# chown -R mysql data/mysql/. #设定mysql用户能访问/usr/local/mysql/data/mysql下的所有文件
# chgrp -R mysql . #设定mysql组能够访问/usr/local/mysql

运行mysql:

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

修改root密码,默认为空:

/usr/local/mysql/bin/mysqladmin -u root password 'newpassword'

MYSQL安装完成

----------------------------------------------------------------

下载最新稳定版本php-5.1.6.tar.gz,下载地址:http://down.itlearner.com/soft/2355.shtml

1. 安装zlib (安装libpng和gd前需要先安装zlib),下载地址:http://down.itlearner.com/soft/2359.shtml
# tar zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure
# make;make install

2. 安装libpng,下载地址:http://down.itlearner.com/soft/2362.shtml
# tar zxvf libpng-1.2.12.tar.gz
# cd libpng-1.2.12
# ./configure
# make;make install

3. 安装freetype,下载地址:http://down.itlearner.com/soft/2361.shtml
# tar zxvf freetype-2.2.1.tar.gz
# cd freetype-2.1.10
# ./configure --prefix=/usr/local/freetype
# make;make install

4. 安装jpeg,下载地址:http://down.itlearner.com/soft/2360.shtml
# tar zxvf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# mkdir /usr/local/jpeg
# mkdir /usr/local/jpeg/bin
# mkdir /usr/local/jpeg/lib
# mkdir /usr/local/jpeg/include
# mkdir /usr/local/jpeg/man
# mkdir /usr/local/jpeg/man/man1
# ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
# make;make install

5. 安装gd,下载地址:http://down.itlearner.com/soft/2357.shtml
# tar zxvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-png --with-zlib
//编译过程中会看到如下信息
** Configuration summary for gd 2.0.33:

Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: no
Support for Xpm library: no
Support for pthreads: yes
//可以看到png 、 jpeg 、 freetype都已经安装上了
# make
# make install

6. 正式安装php
# tar zxvf php-5.1.6.tar.gz
# cd php-5.1.6
# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd --with-zlib --with-png --with-jpeg --with-freetype --enable-sockets --with-iconv --enable-mbstring --enable-track-vars --enable-force-cgi-redirect --with-config-file-path=/usr/local/php5/etc

7.整合php和apache
cp php.ini-dist /usr/local/php5/etc/php.ini
vi /usr/local/php5/etc/php.ini
将extension=php_mysql.dll前面的#去掉

8. 安装ZendOptimizer,下载地址:http://down.itlearner.com/soft/1023.shtml
# tar zxvf ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.0.1-linux-glibc21-i386
# ./install.sh
安装操作: [ok] -> [EXIT] -> [YES] -> [/httpd/zend] -> [/httpd/apache/conf] -> [yes] -> [OK] -> [OK] -> [NO]

遇到的一些错误解决:

1.php5在configure时提示:configure: error: mysql configure failed.,只用--with-mysql参数提示:Cannot find MySQL header files under yes,去掉--with-mysql参数可以安装,php5将无法连接mysql,页面提示为:Fatal error: Call to undefined function mysql_connect()。查阅了一下,发现是mysql5对应的版本不对导致的,换个版本就可以了。
我用mysql-standard-5.0.27-linux-i686.tar.gz时会提示,换了mysql-standard-5.0.27-linux-i686-glibc23.tar.gz后就正常了。

2.重装mysql后启动出错,提示:
Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/xmcncn.pid
061103 15:25:32 mysqld ended
请教高手gump,解决方法:
touch /tmp/mysql.sock
killall -9 mysqld
/usr/local/mysql/bin/mysqld_safe -user=mysql &
成功启动

PS:偶是新手,当初找齐这些软件都化了一整天时间,特别是几个小软件比较难找,现在全部列出来了。测试装的时候也遇到了不少问题,在gump同志的帮助下解决了不少。我站上本来转载了好几篇安装的文章,有的版本较旧,有的不太全面,所以把这次安装过程写出来,以后安装也就方便了:)希望也对一些新手有帮助。

Pages: Prev 1 2 3