【ローコードのSKE】リポジトリ定義時の頻出エラー

## リポジトリ定義とは
SKEにおけるリポジトリ定義の目的は、リポジトリ定義画面から設定を行うことで一覧画面からデータの読込、作成、更新、削除を行える状態にすることです。

一覧画面を適切に表示し、データの読込、作成、更新、削除を行うためにはDDLの作成や項目の定義などの設定をリポジトリ定義画面から行う必要があります。この設定をリポジトリ定義と呼称します。

本記事では上記のリポジトリ定義の際に、頻出するエラーをまとめることで作業を円滑に進めることを助けることを目的とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/068712b1-1c81-459a-91a4-b91213be0e7c.png)


## 頻出エラー

### DDLの定義エラー①

DDLの定義を行う際にCREATE文としての形式に則っていない場合に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/161fb042-bfdb-4d1f-8ffe-a3aeb397c662.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/91b10bc6-4ed6-4e16-ac0b-c93f18d3b599.png)

対策はDDLの定義を適切なCREATE文に修正することです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/3c5a4bf3-0c33-4e8b-a615-973bd36409a0.png)

### DDLの定義エラー②

上記のDDLの定義エラー①が発生しないがSQLとして問題があるようなDDLを設定した際にリポジトリ定義の保存を行うと表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/4d90c0c4-be83-4462-a590-773628597054.png)

対策はDDLの定義を適切なCREATE文に修正することです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/3c5a4bf3-0c33-4e8b-a615-973bd36409a0.png)

### 初期化SQLの定義ミス①

初期化SQLの定義を行う際にINSERT文としての形式に則っていない場合に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/b0b07f8a-c202-41b8-a056-aef5ec33202d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/c26cb68e-79d3-4dea-b5d8-efc002d2c114.png)

対策は初期化SQLの定義を適切なINSERT文に修正することです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/e7066735-c76e-4b86-a4d2-9b819b18076b.png)

### 初期化SQLの定義ミス②

初期化SQLの定義を行う際にINSERT文としての形式に則っていない場合に表示されます。
上記の初期化SQLの定義エラー①が発生しないが、SQLとして問題があるようなSQLを設定した後に初期化SQLが実行されるとサーバーのログに表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/b4ec9edb-9f95-45e0-a0c4-eb965828f200.png)

### JDBCリソース名の設定エラー

JDBCリソース名に適切ではない値を設定する際に発生します。
(JDBCリソース名に設定される値はcontext.xmlに設定されている値と一致する必要です。JDBCリソース名が未設定の場合はデフォルト値のjdbc/efwが使用されます。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/b722898b-be42-4a3a-89f4-4c5e21fc4ca4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/d20fa2c6-0492-4944-85f3-b478c1c736cd.png)

対策はJDBCリソース名を空欄に変更してデフォルト値を利用すること、もしくはcontext.xmlの設定を見直してcontext.xmlファイル内に定義されている値をJDBCリソースに設定すること。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/74938700-1856-454e-8385-2ac803415445.png)

### テーブル＆クエリ項目設定エラー

テーブル＆クエリ項目を設定する際に、実際のテーブル(DDLを設定する場合はDDL)と異なる項目名を設定した場合に一覧画面を表示すると発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/9b0460f6-dd6b-402c-bd45-25383b52bf88.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/4cc1a056-c1ec-402d-b0cd-23c6f9c5244e.png)

対策はテーブル＆クエリ項目に設定する値を実際のテーブル(DDLを設定する場合はDDL)と同じ項目名を同じにすること。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/25b62ff8-60db-4ddf-9a38-75c8de85dadf.png)

### テーブルが存在しないエラー

テーブル名の定義を誤る、もしくは手動でDBからテーブルを削除する等の理由でテーブルが存在しない場合に発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/95182115-74b9-403f-9131-682fdc497fee.png)

対策は適切なテーブル名を再設定すること(リポジトリ定義を保存する際にテーブルが存在しない場合はDDLと初期化SQLが実行されます)。

※注意点としてテーブル名にローマ字を使用する場合、""(ダブルクォーテーション)をつける必要がある。一部のDB(oracleなど)では""を付けない場合に勝手に大文字や小文字に変換してSQLを実行するケースが存在するため。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/7b4f23c8-b5e5-4695-b00d-31931c2fee1b.png)

### テーブル名とDDLのテーブル名が不一致の場合のエラー

リポジトリ定義を行う際にテーブル名とDDL内のテーブル名が不一致の場合に発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/5d517d66-5138-450c-9036-3c60c0529091.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/18bfab20-0d5f-4f97-bc5f-e686ea5f3a07.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/a1acdec2-8f5e-4a3e-a17c-afee70b60e8c.png)

対策はDDLのSQLのテーブル名を見直し、リポジトリ定義画面のテーブル名とSQLのテーブル名を一致させること。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/9d393868-8c8c-42cc-a175-e3664c85e9c5.png)


### oracleの場合にSQL内に";"を含んだ場合のエラー

使用するDBがoracleの場合、SQL内に";"を含むことができないために発生するエラー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/8216ec25-ca6c-4bcc-a316-d9eb03565f2d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/7b2c2596-7e1e-4d5e-8542-ccbcd45382cb.png)

対策はSQLから";"を削除すること

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003045/e1f27bc3-adf9-4036-93d9-a9aaa230cdd6.png)