Adsenseコード

2017-10-27

Salesforceエラーメッセージ集 Apexテスト実行、変更セットリリースエラー等

Salesforce の Apex の実行時のエラーを
書き溜めていきたいと思います。


◆ Apex保存時のエラー

■ Invalid type: CustomObject__Share

オブジェクトに対応する共有設定のオブジェクトを参照したときに、そんなものはない!って言われたときは、下記を確認します。

1.主従関係の項目があるオブジェクトではないか
2.共有設定が更新可能になっていないか

初歩的ではありますが、私は2で少しはまってしまいました・・・。

■ Method does not exist or incorrect signature: void startTest() from the type test

下記のように書き換えたらエラーが解消しました・・・。
バージョンアップの仕様変更かな?

Test.startTest();
...
Test.stopTest();

       ↓↓↓

System.test.startTest();
...
System.test.stopTest();


◆ System.DmlException

■ System.LimitException: DML currently not allowed

■ MISSING_ARGUMENT, Id not specified in an update call: []


以下のようなメッセージが表示されるエラーです。

Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []


発生条件:
まだ Insert されていないレコードの List を Update した時に発生します。


解決策:
Insert してから Update しましょう。



■ FIELD_INTEGRITY_EXCEPTION, メールアドレスが無効です


以下のようなメッセージが表示されるエラーです。

Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, メールアドレスが無効です: ドメイン ... のアドレスを指定してください: [Email]


発生条件:
 組織で指定したドメインに基いたEmailアドレスが設定されないユーザを insert しようとしたときに表示されました。


解決策:
 組織で指定されたドメイン(上記エラー分の「...」の部分)を設定したユーザで insert する。



◆ System.QueryException


■ List has no rows for assignment to SObject


発生条件:
 リスト型ではないsObjectに複数になるクエリ実行結果を
 セットしたときやクエリの実行結果が0件だったときなどに発生する。


参考
https://developer.salesforce.com/forums/?id=906F00000005JdHIAU



◆System.SObjectException


■Invalid field (項目API名) for (オブジェクトAPI名)


発生条件:
 Account.get( 'TestField__c' );
 などオブジェクトに存在しない項目を参照しようとしたときに発生します。
 それ以外には、下記のケースもあるようです。
  http://blog.livedoor.jp/volvic_beer/archives/52118741.html

■Field is not writeable: 主従項目API名


発生条件:
 主従項目で親の変更が禁止されていて、親の変更を実行しようとした時

解決策:
 主従項目の設定で、親レコードの変更を許可をする設定をします。




◆System.EmailException


■endEmail failed. First exception on row 0;

first error: NO_MASS_MAIL_PERMISSION, Single email is not enabled for
your organization or profile.: []

以下のようなメッセージが表示されるエラーです。

System.EmailException: SendEmail failed. First exception on row 0;
first error: NO_MASS_MAIL_PERMISSION, Single email is not enabled for
your organization or profile.: []
Stack Trace: ...

発生条件:
 組織のメールの送信権限で引っかかると発生します。

解決策:
 組織のメールの送信権限をすべてのユーザに設定します。

参考:
 http://blog.livedoor.jp/volvic_beer/archives/52596281.html



◆System.UnexpectedException


■No more than one executeBatch can be called from within a test method.  Please make sure the iterable returned from your start method matches the batch size, resulting in one executeBatch invocation.


テスト実行時に表示されるエラーです。テスト実行時はバッチは1バッチのみ実行が許可されています。

例えば、下記は2バッチ実行されますが、こういった処理はテスト実行ではNGとなります。

<SampleBatchTest>
insert new List<Account>{
    new Account( Name = 1 )
    , new Account( Name = 2 )
};
Database.executeBatch( new SampleBatch(), 1 );

<SampleBatch>
public Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator( [
SELECT
Id
from
Account
] );
}

参考
http://www30304u.sakura.ne.jp/blog/?p=1104


◆リリース時のエラーメッセージ


■field integrity exception: unknown (required must not be specified)


発生条件:
1.外部IDを設定した項目で発生します。
2.Apexで使っている項目で、テキスト項目のデータ型を自動採番に変更しようとするときに発生します。

解決策:
1.一時的に外部ID項目を解除します。
2.Apexの該当箇所を全てコメントアウト&テストコードが通るソースを用意してリリースした上で、反映したいソースをリリースします。
(API名の違う別の項目にすることができればそれが楽ですが、数式、レイアウト、関連リストの設定項目、リストビュー、レポートなど、影響範囲の確認と修正が必要になります)

参考:
 https://web.plus-idea.net/2012/12/salesforce-deploy-field-integrity-exception/

■IF_Stasusは存在しないか、アクションViewの有効な上書きではありません。


発生条件:
 恐らくオブジェクトで設定しているLightningページもしくわVFが、リリース先の環境に存在しないと発生します。

解決策:
 Lightningページを変更セットのコンポーネントに含めるか、Lightningページの割り当てを解除します。

Cannot set sharingModel to ControlledByParent on a CustomObject without a MasterDetail relationship field


発生条件:
 変更セットにカスタムオブジェクトコンポーネントが含まれている場合に発生します。
変更セットに含まれているカスタムオブジェクトの中に、主従関係の子オブジェクトが含まれており、かつその子オブジェクトから親へのリレーションを定義する参照項目が、同じ変更セット内に含んでいないとこのエラーが発生します。

解決策:
 主従関係の子オブジェクトの項目で、親を参照している項目を変更セットに追加します。

参考:
 https://help.salesforce.com/articleView?id=000199646&language=ja&type=1


■Component [force:relatedListSingleContainer] attribute [relatedListApiName]: Could not find related list [MST_KY_YK_Account__r] for entity [Account]


発生条件:
 Lightningレコードページにて子オブジェクトの関連リストを表示するように設定し、かつその子オブジェクトから親へのリレーション項目で、組織間で子リレーション名が異なる場合に発生する。

解決策:
 子リレーション名を修正するか、リレーション項目を変更セットに含めてください。


◆外部連携ツールエラー



■AsyncApiException  exceptionCode='ExceededQuota'exceptionMessage='ApiBatchItems Limit exceeded.'


発生条件:
 外部の連携ツールで24時間以内に1万バッチ以上Salesforce組織に送信すると発生

解決策:
 制限内になるまで待つ。またはSOAP API を使って送信する

参考:
 https://developer.salesforce.com/docs/atlas.ja-jp.212.0.api_asynch.meta/api_asynch/asynch_api_concepts_limits.htm
 https://developer.salesforce.com/forums/?id=906F0000000Ai1QIAS
 https://success.salesforce.com/answers?id=9063A000000DnViQAK

◆デバッグログの容量を超えたとき


■デバッグログを削除して下さい(エラーメッセージ忘れました・・・)


発生条件:
 デバッグログが250MB以上たまると発生します

解決策:
 設定画面のデバッグログの「すべてを削除」ボタンを押してもエラーが解消されない場合、開発者コンソールでクエリを叩き、デバッグログを「Delete Row」で削除します

 以下のクエリで抽出可能です

 SELECT Id FROM ApexLog

参考:
 http://www.subnetwork.jp/blog/?p=1110


0 件のコメント:

コメントを投稿