環境
PHP:7.4
cakePHP:4.2
DB:Oracle Database
概要
cakephpのfindメソッドでデータ取得する際、「ORA-00972:識別子が長すぎます」のエラーが表示され、はまってしまうことが多くありました。
その際の対処法を記載します。
##エラーの理由
バージョン12.2より前のOracle Databaseでは、表名、列名、主キー名などの識別子名が30文字に制限されているそうです。
エラーの通り、識別子が30文字以上あるため、データが取得できませんでした。
対処法
select()で識別子を指定する
index.php
$query = $player->find()
->select([
'SOCCERPLAYER_NAME' => 'PLAYER.SOCCERPLAYER_NAME'
]);
find('list')で取得する場合
selectメソッドでカラム名と同じ識別子にするとエラーになります。
index.php
$query = $player->find('list', [
'keyField' => 'id',
'valueField' => 'name'
])->select([
'id' => 'PLAYER.SOCCERPLAYER_id'
'name' => 'PLAYER.SOCCERPLAYER_NAME'
]);
$data = $query->toArray();