重新加入 MYSQL 中的 InnoDB Engine


因為在某些地方要用到,他是一個支持 FK 的引擎..
正想要切換的時候,才發現這地方少了這引擎.花了說多不多說長不長的時間終於用上了
只怪那地方的設定比較古怪吧..

記錄一下

1
2
3
4
5
# 設定編譯的 MYSQL 資料, 將大多數的引擎都加上,為將來考慮
./configure --prefix=/usr/local/mysql-5.1.51 --enable-assembler --with-charset=utf8 --with-collation=utf8_general_ci --with-big-tables --with-extra-charsets=all --with-mysqld-user=mysql --with-plugins=partition,blackhole,csv,heap,innobase,innodb_plugin,myisam,ndbcluster

# 進行編譯 -jX 這要視乎主機,可加快編譯速度
make -j4 && make install

之後再寫支簡單的 Script 測試

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// 注意,這裡不是用 localhost ,而是直接再指定 socket 檔案,因為不一定是 3306 預設 port
$connect = mysql_connect("localhost:/tmp/mysql.sock", "[帳戶]", "[密碼]");

echo mysql_result(mysql_query("select version();"), 0);
echo "<hr />";

$query = mysql_query("show engines");
while($row = mysql_fetch_array($query)) {
echo $row['Engine'],"<br />";
}
?>

問題總結:

1
2
3
4
5
6
7
8
9
10
11
12
# 報錯
當 InnoDB 在啟動時出現 ibdata1 大少超過預設的 innodb_log_file_size 大小,可以刪除 ibdata1,ib_logfileX 的檔案再開啟動

# 簡化路徑
cd /usr/local
ln -s /usr/local/mysql-5.1.51 mysql

# 啟動指令
/usr/local/mysql5.1.51/bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql-5.1.51/data_3306 &

# 備用指令
/usr/local/mysql-5.1.51/bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql-5.1.51/data_3306 --port=3306 --socket=/tmp/mysql.sock --basedir=/usr/local/mysql-5.1.51 &