網上的大部分答案都是:
1. 注釋/etc/my.cnf里的skip-federated注釋掉即#skip-federated;
2. my.cnf文件配置過高,重新定義其中的參數(根據服務器情況定義);
3. 殺掉mysql_safe和mysqld進程,然后再重啟;
4. 當前日志文件過大,超出了my.cnf中定義的大小(默認為64M),刪除日志文件再重啟;
5. 其他情況,查看日志文件(我的是localhost.localdomain.err,具體因人而異),然后具體分析
我的解決方案是:內存不足,主要是/var目錄內存不足,導致創建 主機名.pid 不能創建主機名.pid
原因是:mysql生成這個文件時候,發現磁盤已經被寫滿,然后關閉時候又把這個pid文件刪除了,導致不能重啟mysql
后面重啟數據庫后,數據庫表報錯:can not create/write to file '/tmp/#sql_787_0.MYI' (error: 28 -no space left on device)
解決方案:在etc/my.cnf 增加一條tmpdir=/home/tmp 然后給chmod 777 /home/tmp 權限,解決表問題
原因猜測:sql發起查詢,然后消耗資源多,但是客戶端這種原因卡掉了,,導致sql查詢表的時候生成一個臨時文件,卡住了,又無法返回,然后一直存在這個臨時文件,下次在查詢時候執行相同記錄,就告訴已經存在臨時文件了,無法執行。(可以移除tmp下的臨時文件,不行的話,重新創建tmp臨時目錄)
再次出現innodb表點擊打開顯示不存在,於是最后辦法,刪除表重新建立