2017-09-09 25 views
0

mysqlの問題は何ですか? 正しい参照と定義が主キー使用する外部キー制約が正しく形成されていません - java-mysql

String clientes = "CREATE TABLE clientes("+ 
        "ID INTEGER NOT NULL AUTO_INCREMENT,"+ 
        "CUENTA INTEGER,"+ 
        "NOMBRE VARCHAR(255),"+ 
        "EDAD INTEGER,"+ 
        "ADICIONAL INTEGER,"+ 
        "DOMICILIO VARCHAR(255),"+ 
        "PRIMARY KEY(ID))"; 

     String cuenta = "CREATE TABLE cuenta("+ 
       "CUENTA INTEGER,"+ 
       "SALDOAFAVOR DOUBLE(14,2),"+ 
       "SALDOENCONTRA DOUBLE(14,2),"+ 
       "FECHACORTE DATE,"+ 
       "LIMITECREDITO DOUBLE(14,2),"+ 
       "FOREIGN KEY(CUENTA) REFERENCES clientes(CUENTA))"; 
+0

エラースタックトレースとは何ですか?あなたの最後の行に:外部キー(CUENTA)の参照クライアント(ID))を試してください。あなたはクライアントの主キーを参照していないからです。 – Sugan

+0

最初のテーブルの 'CUENTA INTEGER'には、場合によってはユニークなキーが必要です。なぜJavaでテーブルを作成していますか? – EJP

+0

[EJP](https://stackoverflow.com/users/207421/ejp)おそらく正しいでしょう。 [外部キー句の例](https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html#idm140447424655232)を参照してください。 – jq170727

答えて

0

前に、私は外部キーを使用していなかったので、私はエラーがあるかわからない:

CREATE TABLE cuenta (
    CUENTA INTEGER AUTO_INCREMENT PRIMARY KEY, 
    CLIENTE_ID INT, 
    SALDOAFAVOR NUMERIC(14, 2), 
    SALDOENCONTRA NUMERIC(14, 2), 
    FECHACORTE DATE, 
    LIMITECREDITO NUMERIC(14,2), 
    FOREIGN KEY(CLIENT_ID) REFERENCES clientes(ID) 
); 

注:

  • CUENTAは、このテーブルの主キーである必要があります。
  • 外部キー参照では、CLIENTESのIDを使用する必要があります。
  • CLIENTESCUENTAは必要ありません。
  • DOUBLE(14, 2)は正しいデータ型ではありません。あなたはDECIMAL(14, 2)/NUMERIC(14, 2)が必要です。
関連する問題