Aws RDSでは、mysql 8.0.16
インスタンスを実行しています。私の問題は、INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS
テーブルが空であることです。
次の表を作成したいので、これは私にとって問題です。
CREATE TABLE my_table
(
...
coordinates POINT NOT NULL SRID 4326
...
);
しかし、これはThere's no spatial reference system with SRID 4326
というエラーメッセージにつながります。
何が起きてる?なぜテーブルが空なのですか? SRID 4326
のエントリが少なくとも1つ含まれていると思います。
RDSの新しいMySQL v8.0.16イメージ(これを書いている時点)には、SRID 0
以外の空間参照がありません。
回避策として、v8.0.15で新しいインスタンスを作成してから、マイナーアップグレードを実行できます(再起動が必要です)。
select count(*) from INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS
...戻り値:
5152
RDS上のMySQL 8.0.16でもこの問題に遭遇しました。自分のサーバーで実行しているMySQLインスタンスでは、不足しているリファレンスシステムを自分で追加することもできますが、これにはRDSでは使用できないSUPERアクセスが必要です。
結局、AWSコンソール経由でAWSサポートに連絡したところ、欠落したSRIDを追加してくれました。これは、新しいインスタンスを作成し、アップグレードし、データをコピーし、新しいデータベースを指すようにアプリを更新するよりもはるかに簡単です。私は開発者レベルのサポート計画を持っていたので、彼らが皆のためにこれをしないだろう可能性があります。
これは本当に問題であることがAWSサポートから確認されました。
AWS担当者からの回避策は次のとおりです(kwalskiでも言及されています):
> Launched new MYSQL instance with version 8.0.16 --> Spatial reference missing
> Upgraded the problematic 8.0.16 instance to 8.0.17 --> Around 5152 spatial reference exist now.
> Launched new MYSQL instance with version 8.0.17 --> Spatial reference missing
The issue exist in newly launched 8.0.16 and also in newly launched 8.0.17 instance.
But upgrading the instance from 8.0.16(problematic) to 8.0.17 can help to overcome the issue but this requires downtime.