0

前回は Cloud Foundry に正常にデプロイできましたが、新しいドメイン クラスが導入されたので、それを更新する必要があります。正常に更新されましたが、1 つのテーブルが作成されませんでした。そのため、アプリを削除してもう一度プッシュして、エラーの詳細を確認しようとしたところ、次のような結果が得られました。

ERROR hbm2ddl.SchemaUpdate  - Unsuccessful: create table case_file (id bigint not null auto_increment, version bigint not null, case_type varchar(255) not null, category varchar(255) not null, client_id bigint not null, date_created datetime not null, class varchar(255) not null, has_criminal_record bit, house_size decimal(19,2), number_of_children integer, agreement varchar(255), brief_evaluation varchar(4000), comments varchar(4000), court_order varchar(255), date_from datetime, date_of_birth datetime, date_of_report datetime, date_signed_authorized_person datetime, date_signed_revisor datetime, date_to datetime, demand_number varchar(255), first_name varchar(255), has_court_order bit, has_intervention_plan bit, has_voluntary_measures bit, interventions_measure_and_resources varchar(4000), last_name varchar(255), other_documents varchar(255), permanent_code varchar(255), proposed_orientation varchar(4000), results_obtained varchar(4000), signature_of_authorized_person longblob, signature_of_director_of_social_services longblob, signature_of_revisor longblob, situation_of_child varchar(4000), voluntary varchar(255), primary key (id)) ENGINE=InnoDB
2012-06-10 15:17:02,466 [main] ERROR hbm2ddl.SchemaUpdate  - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
2012-06-10 15:17:02,501 [main] ERROR hbm2ddl.SchemaUpdate  - Unsuccessful: alter table case_file add index FK27F9B12B94D36A39 (client_id), add constraint FK27F9B12B94D36A39 foreign key (client_id) references client (id)
2012-06-10 15:17:02,501 [main] ERROR hbm2ddl.SchemaUpdate  - Table 'd838abcc25b974c87a204aa924e607694.case_file' doesn't exist
2012-06-10 15:17:13,997 [main] ERROR util.JDBCExceptionReporter  - Table 'd838abcc25b974c87a204aa924e607694.case_file' doesn't exist
Stopping Tomcat because the context stopped.

ドメインについて少し背景を説明すると、3 つの longblob (画像用) が含まれており、それが " Row size too large" 問題を引き起こすのではないかと考えています。ちなみにgrails2.0.0を使っています。これを解決するにはどうすればよいですか?

アプリはローカルで問題なく動作し、このエラーは発生しませんでした。そのため、これを見たときに非常にショックを受けました。

4

1 に答える 1

2

MySQL のこのハード リミットについては、Web サイトで読むことができます。基本的に、256 文字と 4000 文字の列が多すぎて、65,535 の制限を超えています。あなたの最善の行動は、varchar(4000)列を次のように切り替えることtextです:

class MyDomain {
    String description

    static mapping = {
        description type: "text"
    }
}

ただし、Hibernate は既存のデータを新しい列タイプに移行できない場合があることに注意してください。まずはテスト!CF データベースを更新する前に、必ずバックアップを作成してください。

于 2012-06-11T13:07:53.060 に答える