0

私の問題は、MySQL が私の関数呼び出しをローカル スキーマ ストアド プロシージャ呼び出しのようなものとして検出することです。これがMySQLシステム関数であることを明示的に指定する方法がわかりません(または、SQLをどのように変更する必要がありますか)。

私のSQLコードは次のとおりです。

set @p = GeomFromText('POINT(32.8303610 34.9743380)');
select OBJECTID FROM demog_yishuv_stat08_publish
where ST_Contains(demog_yishuv_stat08_publish.Shape, @p);

私が得る応答は次のとおりです。

Error Code: 1305. FUNCTION mySchema.ST_Contains does not exist

ただし、 ST_Containsは MySQL 関数であり、mySchema 内では定義されていません。これはST_CONTAINS のドキュメントです。

どんな助けでも:大歓迎です!

4

1 に答える 1

2

MySQL 5.6.1 以降を使用していることを確認してください。ST_Contains は 5.6.1 で追加されました。あなたが引用したドキュメントから:

MySQL 5.6.1 の時点で、正確なオブジェクト形状を使用する対応するバージョンが利用可能です。これらのバージョンには、ST_ プレフィックスが付いた名前が付けられています。たとえば、Contains() はオブジェクト境界長方形を使用しますが、ST_Contains() はオブジェクト形状を使用します。

以前のバージョンの MySQL は、テスト用に 2 つのジオメトリの正確な形状ではなく MBR を使用する Contains 関数を提供します。これは、MySQL をアップグレードできない場合に有効です。

于 2013-07-06T16:04:24.853 に答える