2013-07-19 1 views
0

Недавно я перенес свое приложение Zend в MariaDb. Она была в MySQL.Zend_Auth_Adapter_DbTable и MariaDb не работают?

Однако я actualy это сообщение, когда пользователь выполняет проверку подлинности:

Предоставленные параметры в Zend_Auth_Adapter_DbTable не в состоянии произвести действительное утверждение SQL, пожалуйста, проверьте имена таблиц и столбцов для действия.

Код продукта PHP как то:

$dbAdapter = Zend_Db_Table::getDefaultAdapter(); 

$adapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 

$adapter->setTableName('users') 
     ->setIdentityColumn('username') 
     ->setCredentialColumn('password') 
     ->setCredentialTreatment('SHA1(CONCAT(?, passwordSalt)) AND isDeleted = 0'); 

$adapter->setIdentity($params['username']); 
$adapter->setCredential($params['password']); 

$result = $adapter->authenticate(); 

if ($result->isValid() === false) { 
    // do something 
} 

Я ничего не изменилось. В чем разница между MySQL и MariaDB для этой части.

+0

В какой ОС вы находитесь? – Orangepill

+0

Моя ОС - Centos 6.4 –

+1

На основе [этого ответа] (http://stackoverflow.com/questions/4576637/the-supplied-parameters-to-zend-auth-adapter-dbtable-failed-to-produce-a- valid-s) проблема существует и между версией mysql ... может быть, ответ там поможет вам в этом случае. – Orangepill

ответ

0

Эта проблема основана на версии mysql.

Я перешел на mariadb и изменил учетные данные, чтобы передать char, сохраняющий utf8 в моем файле конфигурации.

-> setCredentialTreatment ("CAST (MD5 (CONCAT (MD5 (?), Соль)) AS CHAR) AND isactive = '1'");

и работает.