1. 程式人生 > >MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 錯誤的原因及解決

MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 錯誤的原因及解決

我的一個網站用ThinkPHP搭建的,今天網站掛了,開啟除錯模式看了一下,錯誤資訊如下

SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB'

看起來是InnoDB引擎沒起來。搜尋了一下,有一些人說是版本啊什麼的,我的都不是這些原因,因為之前是能訪問的嘛。

之後我就去伺服器看了一下MySQL,看看都哪些儲存引擎可用,發現果真沒有InnoDB。

mysql> show engines;
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                   | Transactions | XA   | Savepoints |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                        | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance    | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables | NO           | NO   | NO         |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
4 rows in set (0.00 sec)

我是想是不是哪些資源不足導致了這個問題呢,查看了一下記憶體看起來緊張了一些,我用的雲主機記憶體1G,之後就想到了我之前在/etc/my.cnf中配置的

innodb_buffer_pool_size=64M


可能和它有關,所以去掉了這句。重啟MySQL果真好了。

暫時先去掉這句吧,等晚上有時間乾脆不用InnoDB了,反正對事務真的沒有要求。這也算當初對儲存引擎的選擇沒有仔細考量吧。