2016-03-29 15 views
2

この更新データベーススクリプトを適用すると、このエラーが発生します。Qubaプラットフォームで更新クエリスクリプトを適用できません

default expression needed in statement [alter table WATERSCHEME_LOCATION add column LGA_ID integer not null ] 

LGA_IDは、ロケーションテーブルに関連付けられた列です.LGA_IDは必須に設定されています。しかし、私が強制的に削除すると、私はスクリプトを更新することができます。

@Table(name = "WATERSCHEME_SCHEME_C") 
@Entity(name = "waterscheme$Scheme_c") 
public class Scheme_c extends BaseIntegerIdEntity { 
private static final long serialVersionUID = -5886267876250540580L; 

@OneToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "LGA_NAME_ID") 
protected Lga lgaName;""" 

これは私の場所のテーブルである

/* 
* Copyright (c) 2016 water-scheme 
*/ 
package com.company.waterscheme.entity; 

import javax.persistence.Entity; 
import javax.persistence.Table; 
import javax.persistence.Column; 
import javax.persistence.FetchType; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import com.haulmont.cuba.core.entity.BaseIntegerIdEntity; 
import com.haulmont.chile.core.annotations.NamePattern; 

/** 
* @author samuel.thampy 
*/ 
@NamePattern("%s|locationName") 
@Table(name = "WATERSCHEME_LOCATION") 
@Entity(name = "waterscheme$Location") 
public class Location extends BaseIntegerIdEntity { 
    private static final long serialVersionUID = 8201565825728955033L; 

    @Column(name = "LOCATION_NAME", nullable = false) 
    protected String locationName; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "LGA_ID") 
    protected Lga lgaId; 

    public void setLocationName(String locationName) { 
     this.locationName = locationName; 
    } 

    public String getLocationName() { 
     return locationName; 
    } 

    public void setLgaId(Lga lgaId) { 
     this.lgaId = lgaId; 
    } 

    public Lga getLgaId() { 
     return lgaId; 
    } 
    } 

私は、デフォルト値を設定する必要があり、なぜ誰かが私を助けることができますか?

答えて

1

もう1つの方法は、更新スクリプトを変更することです。あなたはキューバStudioを使用する場合、それは、下図に示すように、エンティティパネルとプレスがDBのスクリプトを生成行く:

enter image description here

は、その後、あなたがすべてのデータベース・スクリプトが表示されます。 alter table WATERSCHEME_LOCATION add column LGA_ID integer not null 文を持って適切なスクリップを検索し、あなたがnull値のために変化させながら設定しなければならない場所エンティティのidを指定することができます DEFAULT {DEFAULT_VALUE} 句を、追加します。今すぐあなたのデータベースを更新することができます!

P.S.このスクリプトを別のデータベースで実行すると、Locationがデフォルトのidであるため、FOREIGN KEY constraint exceptionが存在する可能性があります。これを避けるには、データベース内にデフォルトの場所が存在しない場合は、指定したidを挿入するように、別のステートメントを同じ更新スクリプトに追加することができます。

3

変更している表は空ではないでしょうか?どんなデータベースが使われていますか?

すでにいくつかのデータが入っているテーブルにnull以外の列を追加することはできません。それは通常、どのように達成されるか

通常の手順:

1)

2 NULL可能列を追加)、彼らはいくつかの値を受け取ることができるように、テーブル内のすべての既存の行を更新します。

3) "alter table alter column set not null"を実行して、カラムをnull以外として設定します。

+1

ありがとう、HSQLDBは​​データベースです。私はLGA_IDを必須として使用していましたが、私はキューバスタジオの必須オプションを削除してこの方法で作業し、データベースとデータベースを更新しました。 –

関連する問題