phalcon3から5にバージョンアップした際にDB周りで発生したHTTP ERROR 500やDeprecated対応
Service Mysql is not registered
FastCGI sent in stderr: "PHP message: Service Mysql is not registered #0 [internal function]: Phalcon\Factory\AbstractConfigFactory->getException() #1 [internal function]: Phalcon\Factory\AbstractFactory->getService() #2 [internal function]: Phalcon\Db\Adapter\PdoFactory->newInstance() #3 /web/dev/ttonosaki/juku/app/settings/services.php(28): Phalcon\Db\Adapter\PdoFactory->load() #4 [internal function]: Closure->{closure}() #5 [internal function]: Phalcon\Di\Service->resolve() #6 [internal function]: Phalcon\Di\Di->get() #7 [internal function]: Phalcon\Di\Di->getShared() #8 [internal function]: Phalcon\Mvc\Model\Manager->getConnection() #9 [internal function]: Phalcon\Mvc\Model\Manager->getReadConnection()
DBの設定(config)でadapterの指定がMysqlからmysqlに変わったようなので修正。
-adapter = Mysql +adapter = mysql
https://docs.phalcon.io/5.0/ja-jp/db-layer#load
SQLSTATE[HY000] [2002] No such file or directory
MySQLに接続できないエラー
FastCGI sent in stderr: "PHP message: SQLSTATE[HY000] [2002] No such file or directory #0 [internal function]: PDO->__construct() #1 [internal function]: Phalcon\Db\Adapter\Pdo\AbstractPdo->connect() #2 [internal function]: Phalcon\Db\Adapter\Pdo\AbstractPdo->__construct() #3 [internal function]: Phalcon\Db\Adapter\Pdo\Mysql->__construct() #4 [internal function]: Phalcon\Db\Adapter\PdoFactory->newInstance() #5 {pathto}/app/settings/services.php(31): Phalcon\Db\Adapter\PdoFactory->load()
PdoFactory->load()に渡すconfigの形式が変わったようです。
iniファイルをそのままconfigとして受けたしてもダメだったので以下のように修正。
-return (new PdoFactory())->load($config->database); +return (new PdoFactory())->load([ + 'adapter' => $config->database->adapter, + 'options' => [ + 'host' => $config->database->host, + 'username' => $config->database->username, + 'password' => $config->database->password, + 'dbname' => $config->database->dbname + ] +]);
マニュアルを見る感じではiniファイルで設定した値をそのまま渡してもよさそうな記述でした。
https://docs.phalcon.io/5.0/ja-jp/db-layer#load
githubでコメントを見ると、マニュアルとは違う形式で受け取る内容がコメントに記載してありました。
https://github.com/phalcon/cphalcon/blob/v5.2.1/phalcon/Db/Adapter/PdoFactory.zep#L29-L41
Call to undefined method Criteria::addWhere()
Call to undefined method Phalcon\Mvc\Model\Criteria::addWhere()
phalcon v4でCriteria::addWhere()は削除されました。
https://docs.phalcon.io/4.0/ja-jp/upgrade#mvcmodelcriteria
andWhere()に変更