当我INSERT
表中与另一个人有1-1关系的记录时,我遇到了麻烦。
首先,生成表的SQL代码:
DROP TABLE IF EXISTS Facebook_Info;
DROP TABLE IF EXISTS Conversations;
CREATE TABLE IF NOT EXISTS Conversations(
c_id INT AUTO_INCREMENT NOT NULL,
c_start TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
channel ENUM('desktop', 'facebook'),
u_name VARCHAR(20) DEFAULT NULL,
u_email VARCHAR(50) DEFAULT NULL,
PRIMARY KEY(c_id)
);
CREATE TABLE IF NOT EXISTS Facebook_Info (
c_id INT AUTO_INCREMENT NOT NULL,
f_id INT(12) NOT NULL,
PRIMARY KEY(c_id),
FOREIGN KEY(c_id) REFERENCES Conversations(c_id)
);
我向你保证这段代码有效:我测试了它。我希望这是在Conversations和Facebook_Info之间提供1-1关系的最佳方式。
无论如何,现在我可以向你介绍我的噩梦:我试图通过PHP(程序风格)在对话中插入新记录。
public function create_new_id_conv($channel = 1) {
$w_ch = '';
if ($channel == 2) {
$w_ch = 'facebook';
} else {
$w_ch = 'desktop';
}
$query = "INSERT INTO Conversations (c_id, c_start, channel) VALUES (NULL, CURRENT_TIMESTAMP,'$w_ch')";
$conn = mysqli_connect("localhost", Wrapper::DB_AGENT, Wrapper::DB_PSW, Wrapper::DB_NAME);
$res = mysqli_query($conn, $query);
$id_conv= mysqli_insert_id($conn);
mysqli_free_result($res);
return $id_conv;
}
Wrapper :: *变量都设置得很好,实际上,INSERT操作完成了,但不仅仅是一个!在我调用此函数后,我遇到了这种情况:
这是对话表的内容:
这里有Facebook_Info的内容:
发生了什么?
答案 0 :(得分:0)
我搜索并搜索了......
然后我开始思考我到达的地方: 2147483647 。这个数字代表什么?那是什么?好像很多! 如果我的脚本和我的查询是正确的但错误是我的表格的骨架怎么办?
我必须注册一个14位整数,这对于INT type来说太大了。
因此使用BIGINT存储f_id字段使得所有正确且有效!
希望我的错误有助于某人!