MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 錯誤的原因及解決
阿新 • • 發佈:2019-02-10
我的一個網站用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了,反正對事務真的沒有要求。這也算當初對儲存引擎的選擇沒有仔細考量吧。