MySQL 外键约束失败

MySQL Foreign Key Constraint Fail

所以,澄清一下:我知道为什么会失败。
问题是:如何解决这个问题?
这是我的设置:

引用 table 是用户,引用列是 id,被引用 table 是 user_data,被引用列是 id。 我想将电子邮件、用户名、salt 和密码存储在一个 table 中,但将登录令牌等用户数据存储在另一个中。我认为这是正确的方法。显然我遗漏了什么。

哦,我正在使用 PHP 和 PDO。

function registerUser($email, $username, $password)
{
    global $db;
    try {
        $prep = $db->prepare("INSERT INTO users (email, username, salt, password) VALUES(':email', ':username', ':salt', ':password')");
        $salt = "abcd";
        $prep->bindParam(':email', $email);
        $prep->bindParam(':username', $username);
        $prep->bindParam(':salt', $salt);
        $prep->bindParam(':password', $password);
        $prep->execute();
        echo "Success";
    } catch (PDOException $e) {
        die("Query failed: " . $e->getMessage());
    }
}

编辑:忘记了错误... Query failed: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (infokup2016.users, CONSTRAINTdataFOREIGN KEY (id) REFERENCESuser_data(id) ON DELETE NO ACTION ON UPDATE NO ACTION)

你设置的外键有误table。

您必须在 table user_data 的字段 id 上设置外键引用 table [=13] 上的字段 id =]

现在您正尝试将数据插入 table users,但是,由于 id 应该出现在 table user_data 中(因为你在 table user 中有一个引用 table user_data 的外键)它给你错误