Linux下thinkPHP連接數據庫報如下錯:PDOException in Connection.php line 295(SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES))
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
今天測試了一個tlinkphp的程序,不知道咋地了,始終就是不能連接數據庫,很是悲劇,具體請看;
$this->fetchType = $config['result_type'];
}
try {
if (empty($config['dsn'])) {
$config['dsn'] = $this->parseDsn($config);
}
if ($config['debug']) {
$startTime = microtime(true);
}
$this->links[$linkNum] = new PDO($config['dsn'], $config['username'], $config['password'], $params);
if ($config['debug']) {
// 記錄數據庫連接信息
Log::record('[ DB ] CONNECT:[ UseTime:' . number_format(microtime(true) - $startTime, 6) . 's ] ' . $config['dsn'], 'sql');
}
} catch (\PDOException $e) {
if ($autoConnection) {
Log::record($e->getMessage(), 'error');
return $this->connect($autoConnection, $linkNum);
這種錯誤,基本屬于數據庫連接不正常所導致的,那必須要看一下數據庫連接文件,有些時候不是單一的一個數據庫文件,可能會是多個,多個的時候可能就會顯示這樣;具體的請參閱忘記mysql數據庫root用戶密碼的解決辦法要么就卸載重裝數據庫Windows下如何干凈利索的完全卸載Mysql以及?mysql8.0如何在windows 10 (win10)下卸載干凈具體多樣化的東西,都需要根據多方面的參考才可以,還有一種說辭的,具體請看下面的說法;
本地的數據庫的密碼默認是 root 導致(比如:phpstudy),到時候更改密碼測試一下,這個問題有待確認,不能說就能解決;
還有其他一種比較靠譜的:
找了N多方法來嘗試,重裝apache、mysql。安裝集成軟件都試過了。錯誤一樣。
后來細細分析,PDOException in Connection指的不就是PDO異常嗎?
然后去了解了一些PDO的知識,找到了問題原因。
然后默默的去php.ini中找到
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
將這兩句去掉前面的分號;
php7.0以上是這兩句
extension=pdo
extension=pdo_mysql
然后重啟apache ok搞定;
PS:延伸閱讀;(下面闡述的一個問題點,多數適合windows系統)
需要從微軟下載sqlserver關于php的驅動,然后把dll文件放到本地php的ext目錄,然后需要把文件名添加到php.ini中,注意、注意、注意:這里邊是兩個文件:
extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll
一個帶有pdo,一個不帶,tp5默認都是pdo鏈接方式,故請確認下是否已添加extension擴展,這個加好后,基本就不會報這個錯了
我這個問題是啥問題呢?在tlinkphp根目錄下也會有其他的文件,文件不一,具體請看;
比如上面的圖片中,幾個無后綴的文件,就可能寫入著各種數據庫連接信息或者其他全局信息,所以看待問題,要多種的選擇才可以;比如我這里就是 修改.env 中的數據庫賬號密碼 才可以打開;
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!