最近在使用MySQL數(shù)據(jù)庫(kù)查詢的過程中遇到了一個(gè)問題,就是查詢服務(wù)一啟動(dòng)就馬上停止了。
2021-07-20T08:45:38.187369Z 0 [Warning] [MY-010917] [Server] 'sparse_files' is deprecated and will be removed in a future release. Please use 'innodb_sparse_files' instead. 2021-07-20T08:45:38.189891Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.23-0ubuntu0.20.04.1) starting as process 148069 2021-07-20T08:45:38.198552Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2021-07-20T08:45:38.658917Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended successfully. 2021-07-20T08:45:38.668024Z 0 [System] [MY-010063] [Server] mysqld: ready for connections. Version: '8.0.23-0ubuntu0.20.04.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu).
在我的機(jī)器上,查詢服務(wù)一啟動(dòng)就馬上停止了,并且沒有任何提示信息。后來(lái)我通過查看MySQL日志文件,發(fā)現(xiàn)了以上的一些信息。
根據(jù)以上信息,我懷疑是數(shù)據(jù)庫(kù)初始化的過程中出了問題,導(dǎo)致服務(wù)無(wú)法繼續(xù)運(yùn)行。我嘗試了幾種方法,包括重新安裝MySQL,修改配置文件等,都沒有解決問題。
最終,我找到了一個(gè)解決方法,即修改MySQL的日志級(jí)別,將日志級(jí)別設(shè)置為debug,然后重啟MySQL服務(wù)。這樣,MySQL就會(huì)生成更詳細(xì)的日志,幫助我找到問題所在。
[mysqld] log_error=/var/log/mysql/error.log log_error_verbosity=3
通過查看新生成的日志文件,我發(fā)現(xiàn)了一個(gè)錯(cuò)誤信息,“ERROR: Got error reading communication packets”。經(jīng)過一些搜索和嘗試,發(fā)現(xiàn)這是由于查詢語(yǔ)句太長(zhǎng),導(dǎo)致MySQL緩沖區(qū)溢出而引起的錯(cuò)誤。
最終,我通過修改MySQL配置文件,增加緩沖區(qū)大小,解決了這個(gè)問題。現(xiàn)在,我的MySQL查詢服務(wù)可以正常運(yùn)行了。