2017-04-07 4 views
0

次のコードは、迷惑な環境で正常に動作しますが、サーバーでは失敗します。理由を理解できません。CakePHP 3:データベースの構文エラーまたはアクセス違反の問題

$settingsQuery = $this->Configurations->find() 
       ->select([ 
        'id', 
        'name', 
        'value', 
        'description', 
        'editable', 
        'keyPrefix' => "SUBSTR(name FROM 1 FOR POSITION('.' IN name) - 1)" 
       ])->order('name'); 

私はこの部分//'keyPrefix' => "SUBSTR(name FROM 1 FOR POSITION('.' IN name) - 1)"コメントアウトする場合、コードは問題なく実行されます。これには何か問題がありますが、ローカルの開発者ではなくサーバー上にあるだけです。

私は、次のエラーを取得しています:

enter image description here

私はUbuntuのボックスの上にPHP 5.6とMySQL 5.6にCakePHPの3.4を実行しています。私の放浪セットアップ(DEV)によって生成された

SQLクエリは、phpMyAdminの

SELECT Configurations.id AS `Configurations__id`, Configurations.name AS `Configurations__name`, Configurations.value AS `Configurations__value`, Configurations.description AS `Configurations__description`, Configurations.editable AS `Configurations__editable`, SUBSTR(name FROM 1 FOR POSITION('.' IN name) - 1) AS `keyPrefix` FROM settings_configurations Configurations ORDER BY name 
+0

MySQLサーバで有効になっているクエリログに、どのSQLが正確に届いているかを確認します。 – ndm

+0

@ndm私はそれを試みます。ありがとう! –

答えて

1

スルーしようとしたとき、あなたはdump($this->getLastSql())でSQLを印刷し、あなたがエラーを取得できるSQL environment.ThenでSQL契約をコピーすることができますうまく動作します。

+0

何かが印刷される前にエラーが出ます! –

+0

私はそれが奇妙に見えるので、解決策をあきらめました。私はPHPを使用してkeyPrefixを引き出すことに頼っています –

関連する問題