2017-06-08 10 views
1

Raw SQLを使用しているときにDoctrineからデータベースにカスタム定義関数を呼び出す際に問題が発生しました。ここで Doctrine Raw SQLがカスタム関数を呼び出さない

SELECT unicodeDecoder(answer) from answers; 

unicodeDecoder

は私のデータベースでカスタム定義関数であると私はデータベースに直接SQL文を実行したときに完全に正常に動作実行されている例SQLクエリです。

しかし、次のように私は、生のSQLを使用してクエリを実行すると:

$sql = "SELECT unicodeDecoder(answer) from answers"; 
$stmt = $this->getEntitityManager()->getConnection()->prepare($sql); 
$stmt->execute(); 

は、私は次のエラーを取得する:カスタム関数を使用するときに

SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION unicodeDecoder does not exist 

は、私は、カスタムORMマッピングを作成する必要がありますかまたはこれはキャッシュの問題のいくつかの形式ですか?

大変お手伝いをいたします。問題が見つかった場合

$sql = "SELECT my_db.unicodeDecoder(answer) from answers"; 
+0

正しいユーザーを使用していることを確認してください(特権を確認してください) – Matteo

+0

こんにちはマッテオ、私は間違いなく他のすべてのクエリが問題なく動作しているので、適切なユーザーを使用しています。しかし、おかげで –

答えて

0

:事前

2

おかげで、データベース名と機能を接頭辞にしてください。 @ alex-blexさん、ありがとうございました。

私のデータベースには、名前に.を持っていますcms.app.com

Doctrineはそれが自動的に先頭にデータベース名を追加する方法にアクセスしようとすると問題が.

によって引き起こされました。

私は(@アレックス・blexにより示唆されるように)先頭にcms.app.comを追加しようとしたとき、それは私が次

を試みた(間違った構文である)以下のメソッド呼び出し

cms.app.com.unicodeDecoder() 

を作成

`cms.app.com`.unicodeDecoderが、これはまだ

cms.app.com.unicodeDecoder() 

に解決が、私はデータベース名から.を取り出して、それが今のw予想どおりのorks。

重要な注意: `記号が取り除か得るようDoctorineが名前を正しく解決しないと、データベース名に.を使用しないでください。

+0

これは残念ながら動作しませんでした。同じエラーが表示されるだけですが、メソッドにはエラーのデータベース名の接頭辞が付きます。 –

関連する問題