php数据库表创建失败

标准书呆子

我使用以下要点尝试进行OOP创建数据库连接:

https://gist.github.com/jonashansen229/4534794

到目前为止,它似乎仍然有效。

但是创建数据库表passed_exams失败。

编辑:

经过最近的评论和建议,我更新了我的代码:

require_once 'Database.php'; // the gist 4534794

class DatabaseSchema {

  public function createStudents() {
    $db = Database::getInstance();
    $mysqli = $db->getConnection();
    $create_students = 'CREATE TABLE IF NOT EXISTS students (
      id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
      firstname VARCHAR(40) NOT NULL,
      lastname VARCHAR(40) NOT NULL,
      university VARCHAR(50)
    )';
    $result = $mysqli->query($create_students);
  }

  public function createPassedExams() {
    $db = Database::getInstance();
    $mysqli = $db->getConnection();
    $create_passed_exams = 'CREATE TABLE IF NOT EXISTS passed_exams (
      id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(40) NOT NULL,
      student_id INT(6),
      FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE
    )';
    $result = $mysqli->query($create_passed_exams);
  }

}

$db_student = new DatabaseSchema();

$db_student->createStudents();
$db_student->createPassedExams();

当我在mysql控制台中查找时,仅创建表格学生。为什么表pass_exams丢失了?

马特·雷恩斯(Matt Raines)

id您的列studentsINT(6) UNSIGNED,但student_id在列passed_exams表是一个签字 INT(6)因此,该FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE子句将失败,并显示“错误代码:1215。无法添加外键约束”。

我建议您实施一些错误处理,以便您会看到此错误消息,而不是盲目地继续执行代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章