由于我知道如何使用mySql原始语句和Laravel流利查询,这使我有些困惑,特别是用于创建表的语句,我想使用原始SQL语句创建表。
没有外键的表已成功创建,但是尝试用外键创建表时出现错误消息。例如,以下代码
$sql_kreiraj_Prof="
CREATE TABLE profesori(
ProfID INTEGER PRIMARY KEY NOT NULL,
ime CHAR(15) NOT NULL,
prezime CHAR(15) NOT NULL,
k_ime CHAR(10) NOT NULL UNIQUE,
sifra CHAR(15) NOT NULL)";
try {
$sql_postoji="SELECT 1 FROM profesori LIMIT 1";
}
catch(Exception $e){
DB::statement($sql_kreiraj_Prof);
}
$sql_kreiraj_Predmet="
CREATE TABLE predmeti(
PredmetID INTEGER PRIMARY KEY NOT NULL,
naziv CHAR(100) NOT NULL UNIQUE,
semestar ENUM ('I','II','III','IV','V','VI','VII','VIII','IX','X') NOT NULL,
dan ENUM ('Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak') NOT NULL,
rbr_casa INTEGER NOT NULL,
FOREIGN KEY (predavacID)
REFERENCES profesori (ProfID)
ON UPDATE CASCADE)";
try {
$sql_postoji="SELECT 1 FROM predmeti LIMIT 1";
}
catch(Exception $e){
DB::statement($sql_kreiraj_Predmet);
}
结果出现以下错误:
SQLSTATE [42000]:语法错误或访问冲突:1072表中不存在键列'predavacID'(SQL:CREATE TABLE predmeti ...
我现在试图解决这一问题,因此非常欢迎提供解决此问题的建议。
答案 0 :(得分:1)
表中不存在键列'predavacID'
该错误非常明显。您正在尝试将predavacID
设置为外键,但是不存在该名称的列。您需要选择predmeti
表中的整数列之一,或者在将列predavacID
设置为外键之前对其进行声明。
外键约束不会隐式创建列。该列必须独立存在。