yum mysql 5.0.96_mysql-5.0.96源代码安装Q&A[阮胜昌]

编译Mysql时configure: error: No curses/termcap library found 的错误解决方法

编译Mysql时configure: error: No curses/termcap library found 的错误解决方法

在编译Mysql时

./configure --prefix=DIR

,如果出现了以下错误:

......

checking for tgetent in -ltermcap... no

checking for termcap functions library... configure: error: No curses/termcap library found

说明 curses/termcap 库没有安装

apt-cache search curses | grep lib

安装 libncurses5-dev ,然后重新运行配置

apt-get install libncurses5-dev

../depcomp: line 512: exec: g++: not found

make[2]: *** [my_new.o] Error 127

make[2]: Leaving directory `/usr/local/src/mysql-5.0.41/mysys'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/usr/local/src/mysql-5.0.41'

make: *** [all] Error 2

解决办法:

安装gcc-c++

yum install gcc-c++

安装完成之后再次编译make

可能会出现如下错误:

../include/my_global.h:909: error: redeclaration of C++ built-in type `bool'

make[2]: *** [my_new.o] Error 1

make[2]: Leaving directory `/home/tools/mysql-5.0.22/mysys'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/tools/mysql-5.0.22'

make: *** [all] Error 2

是因为gcc-c++是在configure之后安装的,此时只需重新configure后再编译make即可。

用5.1版本的时候如下方法是可以解决中文编码问题的

----在配置文件[mysqld]和[client]节下分别添加: default-character-set = utf8

2.不知到是不是手动编译的原因,在5.5.8中配置文件中用上述方法会造成数据库服务无法启动。

----错误日志如下:( datadir/username.err为错误日志文件)

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

mysqld_safe mysqld from pid file /home/cyberwym/Programming/mysql/mysqldata/cyberwym.pid ended

...........

...........

[ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'default-character-set=utf8'

[ERROR] Aborting

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

----这样会造成pid文件(datadir/username.pid)无法更新

----在配置文件[mysqld]和[client]节下分别去掉: default-character-set = utf8 后,数据库服务就启动正常了

cmake两个错误的解决方法今天在linux上配置环境时遇到了两个cmake的问题,在网上找了半天才找到解决方法。菜鸟特此记下解决方法,以备后用。

问题1:

-- Check for working CXX compiler: CMAKE_CXX_COMPILER-NOTFOUND

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

解决方法:

sudo apt-get install gcc-c++

问题2:

CMake Error at /usr/share/cmake-2.6/Modules/FindKDE4.cmake:84 (MESSAGE):

ERROR: cmake/modules/FindKDE4Internal.cmake not found in

/home/mm/.kde/share/apps;/usr/share/kde4/apps[/code]

解决方法:

sudo apt-get install kdelibs5-dev

若遇到如下错误提示:

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

解决:yum install gcc-c++ -y

===========================

mysql的data目录是在/usr/local/mysql/data,你可以移到/data下:

mv /usr/local/mysql/data /

vi /etc/my.cnf的[mysqld]中加入:

datadir = /data

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

源码方式安装mysql5.5.8出现sql/CMakeFiles/sql.dir/sp_head.cc.o] Error 1错误解决方法

源码安装mysql-5.5.8版本在make的时候如果遇到以下的错误

make[2]: *** [sql/CMakeFiles/sql.dir/sp_head.cc.o] Error 1 make[2]:

*** Waiting for unfinished jobs…. make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2 make: *** [all] Error 2

解压mysql-5.5.8的安装包,configure之后进到解压后的文件夹下

cd mysql-5.5.8/sql

修改以下文件:

sql/sp_head.cc

sql/sql_connect.cc

sql/sql_cursor.cc

sql/sql_parse.cc

sql/sql_prepare.cc

具体修改如下:

把红色部分修改为蓝色的部分然后保存退出

modified:

sql/sp_head.cc

sql/sql_connect.cc

sql/sql_cursor.cc

sql/sql_parse.cc

sql/sql_prepare.cc

=== modified file ‘sql/sp_head.cc’

— a/sql/sp_head.cc 2010-11-18 15:01:58 +0000

+++ b/sql/sp_head.cc 2010-12-08 16:47:21 +0000

@@ -3159,7 +3159,7 @@ sp_instr_stmt::exec_core(THD *thd, uint

MYSQL_QUERY_EXEC_START(thd->query(),

thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                         thd->security_ctx->priv_user,

+                         &thd->security_ctx->priv_user[0],

(char *)thd->security_ctx->host_or_ip,

3);

int res= mysql_execute_command(thd);

=== modified file ‘sql/sql_connect.cc’

— a/sql/sql_connect.cc 2010-12-14 14:34:23 +0000

+++ b/sql/sql_connect.cc 2010-12-08 16:47:21 +0000

@@ -736,7 +736,7 @@ void do_handle_one_connection(THD *thd_a

if (rc)

goto end_thread;

-    MYSQL_CONNECTION_START(thd->thread_id, thd->security_ctx->priv_user,

+    MYSQL_CONNECTION_START(thd->thread_id, &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip);

prepare_new_connection_state(thd);

=== modified file ‘sql/sql_cursor.cc’

— a/sql/sql_cursor.cc 2010-11-12 12:56:21 +0000

+++ b/sql/sql_cursor.cc 2010-12-08 16:47:21 +0000

@@ -111,7 +111,7 @@ int mysql_open_cursor(THD *thd, select_r

MYSQL_QUERY_EXEC_START(thd->query(),

thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                         thd->security_ctx->priv_user,

+                         &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip,

2);

rc= mysql_execute_command(thd);

=== modified file ‘sql/sql_parse.cc’

— a/sql/sql_parse.cc 2010-12-14 14:34:23 +0000

+++ b/sql/sql_parse.cc 2010-12-08 16:47:21 +0000

@@ -877,7 +877,7 @@ bool dispatch_command(enum enum_server_c

thd->profiling.start_new_query();

#endif

MYSQL_COMMAND_START(thd->thread_id, command,

-                      thd->security_ctx->priv_user,

+                      &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip);

thd->command=command;

@@ -1018,7 +1018,7 @@ bool dispatch_command(enum enum_server_c

break;     // fatal error is set

MYSQL_QUERY_START(thd->query(), thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                      thd->security_ctx->priv_user,

+                      &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip);

char *packet_end= thd->query() + thd->query_length();

/* ‘b’ stands for ‘buffer’ parameter’, special for ‘my_snprintf’ */

@@ -1070,7 +1070,7 @@ bool dispatch_command(enum enum_server_c

MYSQL_QUERY_START(beginning_of_next_stmt, thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                        thd->security_ctx->priv_user,

+                        &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip);

thd->set_query_and_id(beginning_of_next_stmt, length,

@@ -5489,7 +5489,7 @@ void mysql_parse(THD *thd, char *rawbuf,

MYSQL_QUERY_EXEC_START(thd->query(),

thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                                 thd->security_ctx->priv_user,

+                                 &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip,

0);

=== modified file ‘sql/sql_prepare.cc’

— a/sql/sql_prepare.cc 2010-12-14 10:46:00 +0000

+++ b/sql/sql_prepare.cc 2010-12-08 16:47:21 +0000

@@ -3759,7 +3759,7 @@ bool Prepared_statement::execute(String

MYSQL_QUERY_EXEC_START(thd->query(),

thd->thread_id,

(char *) (thd->db ? thd->db : ""),

-                             thd->security_ctx->priv_user,

+                             &thd->security_ctx->priv_user[0],

(char *) thd->security_ctx->host_or_ip,

1);

error= mysql_execute_command(thd);

这主要是MSYQL5.5.8的一个BUG,一个数组的读取问题。只要把以上的文件修改了之后就可以正常安装了,我在CentOS 5.5 64位系统下安装通过。

如果不想自己手动修改的读者可以下载我修改好的文件到对应的路径下。点这里下载  msql-5.5.8-path.tar.tar(在附件中)

Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

今天在centos5.2 64位机器上安装mysql-5.1.32-linux-x86_64-icc-glibc23.tar.gz,启动服务出现报错:

Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

平时装MYSQL都还没有出过什么问题,于是马上认真检查了步骤,没有什么问题。只好网上求助了。得到以下方法:

1.注释掉 skip-federated,按此方法操作,无果。

2.关闭selinux,已经关闭了,所以排除。

查看mysql日志,发现错误:

/usr/local/mysql/bin/mysqld: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

090320 00:59:22 mysqld_safe mysqld from pid file /var/log/mysql/mysql.pid ended

090320 01:17:29 mysqld_safe Starting mysqld daemon with databases from /mysql_data/

可以看出缺少库文件 libstdc++.so.5。

到官方下载:wget http://mirror.centos.org/centos/5.2/os/x86_64/CentOS/compat-libstdc++-33-3.2.3-61.x86_64.rpm

安装:

rpm -ivh compat-libstdc++-33-3.2.3-61.x86_64.rpm

再重新启动MYSQL服务,启动OK.

安装mysql 版本: mysql-5.1.41-linux-i686-icc-glibc23.tar.gz

第一步:

mysql5.1.30   初次启动会出现Manager of pid-file quit without updating fi[FAILED]的报错,需要注释/etc/my.cnf里的skip-federated注释掉即#skip-federated就OK了!

但还不好用。错误依旧。

第二步:

杀掉已经启动的进程

CODE:

[root@localhost mysql]# ps -A|grep mysql

8016 pts/2 00:00:00 mysqld_safe

8037 pts/2 00:00:00 mysqld

果然有两个顽固分子

杀之!!!

kill -9 8037(杀掉这个8016那个就自动被杀了!)

kill -9 8016

开心的时刻终于到来了

CODE:

[root@localhost mysql]# /etc/init.d/mysql restart

MySQL manager or server PID file could not be found! [FAILED]

Starting MySQL [ OK ]

=>mysql数据库中文乱码解决 :

1. 乱码分析

----从终端shell进入mysql

shell:~$ mysql

............

............

mysql> show variables like '%character%'

----得到以下数据库编码信息表:

+----------------------------------- +-------------------------------------------+

| Variable_name                    | Value                                               |

+------------------------------------+-------------------------------------------+

| character_set_client           | utf8                                                    |

| character_set_connection | utf8                                                    |

| character_set_database    | latin1                                                 |

| character_set_filesystem   | binary                                                |

| character_set_results         | utf8                                                     |

| character_set_server          | latin1                                                 |

| character_set_system         | utf8                                                    |

| character_sets_dir               | /usr/local/mysql/share/charsets/  |

+------------------------------------ +-------------------------------------------+

可以看出character_set_database  ,character_set_server 的编码还是默认的latin1。

不知道为什么,之前DEFAULT_CHARSET设置成为utf8的,好像没起作用。查看官方文档

发现,character_set_database不支持配置文件(/etc/my.cnf)变量设置,

但是character_set_server 支持配置文件变量设置。

2. 解决办法

----打开配置文件

shell:~$ sudo gedit /etc/my.cnf

然后在[mysqld]配置选项下添加

character_set_server = utf8

----然后进入mysql

执行:

mysql> show variables like '%character%'

结果:character_set_database  ,character_set_server两项都变为utf8了

----测试:

往数据库表中插入中文字段,中文就正常显示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值