2016-07-07 7 views
0

ich einige Probleme mit mit MariaDB in XAMPP für OS X.Fremdschlüssel mit Timestamp Formed falsch

Ich entwickle eine Datenbank, wo ich einige Fremdschlüssel zu TIMESTAMP verwiesen einzufügen haben in anderen Tabellen-Attribute.

Wenn das System versucht, die „erstellen Fremdschlüssel“ Anweisung zu verarbeiten, es gibt mir diese Fehlermeldung:

„errno: 150‚Fremdschlüssel ist falsch Formed‘

Hier meine SQL sind Befehle

CREATE DATABASE IF NOT EXISTS cinguettio; 
USE cinguettio; 


CREATE TABLE IF NOT EXISTS utente(
    email VARCHAR(50) PRIMARY KEY, 
    città VARCHAR(30), 
    stato VARCHAR(30), 
    provincia VARCHAR(30), 
    datanascita DATE, 
    luogonascita VARCHAR(30), 
    nome VARCHAR(30), 
    cognome VARCHAR(30), 
    vip VARCHAR(1), 
    sesso VARCHAR(1), 
    password VARCHAR(20) 
); 

CREATE TABLE IF NOT EXISTS apprezzamento(
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    testo VARCHAR(50), 
    dataoraimm TIMESTAMP, 
    id INT(7), 
    PRIMARY KEY (dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email) 
); 

CREATE TABLE IF NOT EXISTS hobby(
    nome VARCHAR(20) PRIMARY KEY 
); 


CREATE TABLE IF NOT EXISTS immagine(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    nomefile VARCHAR(30), 
    percorso VARCHAR(200), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email) 
); 

CREATE TABLE IF NOT EXISTS luogo(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    latitudine FLOAT(2,2), 
    longitudine FLOAT(2,2), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email) 
); 

CREATE TABLE IF NOT EXISTS pratica(
    nome VARCHAR(20), 
    email VARCHAR(50), 
    PRIMARY KEY (nome, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 
    FOREIGN KEY (nome) REFERENCES hobby(nome) 
); 



CREATE TABLE IF NOT EXISTS scrivea(
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    PRIMARY KEY (dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 
    FOREIGN KEY (dataora) REFERENCES apprezzamento(dataora) 

); 

CREATE TABLE IF NOT EXISTS testo(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    contenuto VARCHAR(100), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email) 
); 

CREATE TABLE IF NOT EXISTS segue(
    segue VARCHAR(50), 
    seguito VARCHAR(50), 
    PRIMARY KEY (segue, seguito), 
    FOREIGN KEY (segue) REFERENCES utente(email), 
    FOREIGN KEY (seguito) REFERENCES utente(email) 
); 

CREATE TABLE IF NOT EXISTS scrivet(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 

    FOREIGN KEY (id) REFERENCES testo(id) 
); 

CREATE TABLE IF NOT EXISTS segnala(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 
    FOREIGN KEY (dataora) REFERENCES testo(dataora), 
    FOREIGN KEY (id) REFERENCES testo(id) 
); 

CREATE TABLE IF NOT EXISTS preferisce(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 
    FOREIGN KEY (dataora) REFERENCES luogo(dataora), 
    FOREIGN KEY (id) REFERENCES luogo(id) 
); 

CREATE TABLE IF NOT EXISTS pubblica(
    id INT(7), 
    dataora TIMESTAMP, 
    email VARCHAR(50), 
    PRIMARY KEY (id, dataora, email), 
    FOREIGN KEY (email) REFERENCES utente(email), 
    FOREIGN KEY (dataora) REFERENCES luogo(dataora), 
    FOREIGN KEY (id) REFERENCES luogo(id) 
); 

bis der Tisch „scrivet“ alles geht in Ordnung, dann hält er an. ich bin sicher, dass das Problem mit dem Attribut „dataora“, weil ich versuchte, es zu löschen und es hat gut funktioniert.

Also ... was soll ich tun?

+0

Possible Duplikat [Use-Zeitstempel (oder DATETIME) als Teil des Primärschlüssels (oder ein Teil von gruppierten Index)] (http://stackoverflow.com/questions/16851129/use-timestampor-datetime- als Teil des Primärschlüssels oder Teil des Clustered-Index –

Antwort