Linux启用MySQL的InnoDB引擎

9 篇文章 0 订阅

前几天公司的一个项目组的同事反应说公司内部的一台Linux服务器上的MySQL没有InnoDB这个引擎,我当时想应该不可能啊,MySQL默认应该就已经安装了这个引擎的吧,于是上服务器去看了看,发现还真没有,于是putty到服务器上,show engines看了一下:

+------------+---------+
| Engine     | Support | 
+------------+---------+
| CSV        | YES     | 
| MRG_MYISAM | YES     |
| MEMORY     | YES     |
| MyISAM     | DEFAULT |
+------------+---------+

列表中没有InnoDb,第一反应是不是安装MySQL的时候没有编译InnoDb呢?但心想MySQL应该是自带了的,但google发现有网友说因为InnoDb是以插件的方式加载到MySQL中的,所以可以直接使用install plugin innodb soname 'ha_innodb.so'来启用InnoDB,但首先我们需要查看一下是否已经编译InnoDb:

mysql> show plugins;
+------------+--------+----------------+---------+---------+
| Name       | Status | Type           | Library | License |
+------------+--------+----------------+---------+---------+
| binlog     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
| CSV        | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
| MEMORY     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
| MyISAM     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
+------------+--------+----------------+---------+---------+
但是发现连插件里面都没有,这下可以确定是没有编译了,于是决定对MySQL重新编译,当然编译前请先备份所有数据库,以免造成数据丢失。

[root@192.168.1.1]# mysqldump --all-database -u root -p > /data0/www/1.sql
[root@192.168.1.1]# mysql-5.1.60]#screen -S stou
[root@192.168.1.1]# mysql-5.1.60]#automake --force --add-missing
[root@192.168.1.1]# mysql-5.1.60]#./configure --prefix=/usr/local/mysql/ --with-plugins=innobase
wdcp下安装:
[root@192.168.1.1]# mysql-5.1.60]#./configure --prefix=/usr/local/mysql/ --with-plugins=innobase --with-charset=gbk --with-collation=gbk_chinese_ci
 
 

但是最后却出现了以下错误:

mysql.cc:1049: error: expected constructor, destructor, or type conversion before '*' token
mysql.cc: In function 'int not_in_history(const char*)':
mysql.cc:2427: error: 'HIST_ENTRY' was not declared in this scope
mysql.cc:2427: error: 'oldhist' was not declared in this scope
mysql.cc:2427: error: 'history_get' was not declared in this scope
mysql.cc: In function 'void initialize_readline(char*)':
mysql.cc:2463: error: invalid conversion from 'char** (*)()' to 'char** (*)(const char*, int, int)'
mysql.cc:2464: error: invalid conversion from 'int (*)(const char*, int)' to 'char* (*)(const char*, int)'
mysql.cc:2465: error: invalid conversion from 'int (*)()' to 'int (*)(int, int)'
mysql.cc:2465: error:   initializing argument 2 of 'int rl_add_defun(const char*, int (*)(int, int), int)'
mysql.cc: In function 'char** new_mysql_completion(const char*, int, int)':
mysql.cc:2487: error: 'completion_matches' was not declared in this scope
make[2]: *** [mysql.o] Error 1
make[2]: Leaving directory `/usr/download/mysql-5.1.60/client'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/download/mysql-5.1.60/client'
make: *** [all-recursive] Error 1
Google一下发现不少人都有这个问题,其实解决这个问题只需要在configure前执行一次:
[root@192.168.1.1]# make clean
然后再重复./configure --prefix=/usr/local/mysql/ --with-plugins=innobase和make这个步骤就可以了,然后再:

[root@192.168.1.1]# make install
[root@192.168.1.1]# service mysqld restart
[root@192.168.1.1]# mysql -u root -p
mysql> show engines;
+------------+---------+
| Engine     | Support |
+------------+---------+
| CSV        | YES     |
| MRG_MYISAM | YES     |
| MEMORY     | YES     |
| InnoDB     | YES     |
| MyISAM     | DEFAULT |
+------------+---------+

InnoDB启用成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值