2011-07-22 30 views
0

MySQLのクエリのCakephpでコントローラを介してこれをクエリしたところ、以下のエラーが発生しました。MySQLのエラー...#1305

SELECT id, 6371 * ACos(COS(RADIANS(users.latitude)) * Cos 
         (RADIANS(35)) * Cos(RADIANS(33) - RADIANS 
         (users.longitude)) + Sin(RADIANS(users.latitude)) * Sin 
         (RADIANS(35))) AS distance 
         FROM users 
         ORDER BY distance 
         LIMIT 20; 

私はここにこだわっては...誰もがこの問題が何であるかを知っていますか?

Warning (512): SQL Error: 1305: FUNCTION wmetools_track.Cos does not exist [APP/cake/libs/model/datasources/dbo_source.php, line 684] 
Code | Context 

DboSource::showQuery() - APP/cake/libs/model/datasources/dbo_source.php, line 684 
DboSource::execute() - APP/cake/libs/model/datasources/dbo_source.php, line 266 
DboSource::fetchAll() - APP/cake/libs/model/datasources/dbo_source.php, line 410 
DboSource::query() - APP/cake/libs/model/datasources/dbo_source.php, line 287 
Model::query() - APP/cake/libs/model/model.php, line 2463 
UsersController::api_localusers() - APP/controllers/users_controller.php, line 88 
Dispatcher::_invoke() - APP/cake/dispatcher.php, line 204 
Dispatcher::dispatch() - APP/cake/dispatcher.php, line 171 
[main] - APP/webroot/index.php, line 83 
+0

エラー1305は「ストアドプロシージャが存在しません」です。私はこのクエリがその原因だと疑っています - あなたはここにSPを呼んでいません。 –

答えて

2

MySQLは、関数名と開始括弧の間の空白が気に入らないようです。

select cos (0.4) -- error 
select cos(0.4) -- works 

編集: MySQL Documentationがこれをサポートしています。しかし、明らかに回避策があります: "IGNORE_SPACE"を使って問題を解決するべきです(関数名と括弧の間の空白を削除するだけです)。