The PDO extension is required for this adapter but

2020-03-24 04:15发布

问题:

I am getting the following exception when i try to use the fetchall method of the Zend_Db_Table_Abstract class...

An error occurred4545
EXCEPTION_OTHER
Exception information:
Message: The PDO extension is required for this adapter but the extension is not loaded 

Stack trace:
#0 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect()
#1 D:\www\TestProject\library\Zend\Db\Adapter\Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect()
#2 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('DESCRIBE `album...', Array)
#3 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Mysql.php(156): Zend_Db_Adapter_Pdo_Abstract->query('DESCRIBE `album...')
#4 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(823): Zend_Db_Adapter_Pdo_Mysql->describeTable('albums', NULL)
#5 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(862): Zend_Db_Table_Abstract->_setupMetadata()
#6 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(969): Zend_Db_Table_Abstract->_setupPrimaryKey()
#7 D:\www\TestProject\library\Zend\Db\Table\Select.php(100): Zend_Db_Table_Abstract->info()
#8 D:\www\TestProject\library\Zend\Db\Table\Select.php(78): Zend_Db_Table_Select->setTable(Object(Application_Model_Albums))
#9 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(1005): Zend_Db_Table_Select->__construct(Object(Application_Model_Albums))
#10 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(1303): Zend_Db_Table_Abstract->select()
#11 D:\www\TestProject\application\controllers\IndexController.php(17): Zend_Db_Table_Abstract->fetchAll()
#12 D:\www\TestProject\library\Zend\Controller\Action.php(513): IndexController->indexAction()
#13 D:\www\TestProject\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#14 D:\www\TestProject\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#15 D:\www\TestProject\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#16 D:\www\TestProject\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#17 D:\www\TestProject\public\index.php(26): Zend_Application->run()
#18 {main}  
Request Parameters:
array (
  'controller' => 'index',
  'action' => 'index',
  'module' => 'default',
)  

I have added the following lines in the php.ini file

extension=pdo.so
extension=pdo_mysql.so

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Also i have The PDO MySQL package installed in my system. But still I am getting the above exception.... (Also restarted the Apache server)

回答1:

First of all, you cannot have both :

extension=pdo.so
extension=pdo_mysql.so

Which are for Linux, and :

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Which are for windows : you've got to choose, depending on the system you are using.

As you are on windows, you should use the .dll version.


But note that you used :

extension=php_pdo_mssql.dll 

i.e. you loaded the pdo_mssql extension -- which is for Microsoft SQL Server, and not MySQL.

Instead, you should load the extension for MySQL :

extension=php_pdo_mysql.dll 

After correcting that, restart Apache ; and things should get better.


If things don't get better, you should check the output of phpinfo() :

  • At the beginning of phpinfo()'s output, it indicates which php.ini file is loaded ; make sure you modified the right one.
  • Check, lower in the file, if there is a section about pdo_mysql
    • If not, check Apache's error_log, just in case ;-)


回答2:

Mabe swich backed from PDO to Mysqli helps, they're swichable in ZF (i did so).



回答3:

Today I have moved one website from our testing server to the client server and getting such kind of the error that The PDO extension is required for this adapter but the extension is not loaded. I was thinking that there must be pdo.so php extension which is not installed on the server. After recogniging the problem, I was looking for the php.ini file to check the extension but due to the shared hosting they did not provide me the ini file.

Here in this post I am trying to describe how to solve the such kind of the problem it is very easy and you can solve the problem by using the steps given below:

If you want to know more regarding the PDO look at http://php.net/manual/en/ref.pdo-mysql.php

If you have access of the php.ini file then check

;extension=pdo_mysql.so

Just you need to uncomment the line to activate so it looks like as

extension=pdo_mysql.so

Save the file and restart the server.

If you have no access of the php.ini file, follow the following steps

Step 1. Please check your Magento installation directory there must me a file named as php.ini.sample.

Step 2. Now rename the file from php.ini.sample to php.ini

Step 3. Put the below code into it

extension = pdo.so
extension = pdo_sqlite.so
extension = sqlite.so
extension = pdo_mysql.so

Step 4. Now refresh your browser cache and the problem has been solved.



回答4:

If your on godaddy hosting account and you can't do anything because of the restriction to main configuration files of the server and you cant restart apache. You can bypass this problem by changing the php version from "Select PHP Version" this way you will restart settings. In my case I tryied to edit php.ini than php5.ini also added .user.ini file and in result of that i got this error: PDO extension is required for this adapter but the extension is not loaded Now my problem is solved, this solution can work on other hostings not only godaddy if you are not a system administrator!!!