mysql数据被截断_有关Mysql数据截断问题的处理方法
測試數據:
有一個表aritcle和另一個表article_comment,關聯是article的id。
創建測試表及添加測試數據:
表1:
復制代碼 代碼示例:
CREATE TABLE `article` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
表2:
復制代碼 代碼示例:
CREATE TABLE `article_comment` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(200) NOT NULL,
`article_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `art_id` (`article_id`),
CONSTRAINT `art_id` FOREIGN KEY (`article_id`) REFERENCES `article` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
添加測試數據:
復制代碼 代碼示例:
set sql_mode='';
insert into article values(12345678901,'name1');
insert into article_comment(text,article_id) values('text1',12345678901);
insert into article_comment(text,article_id) values('text2',12345678902);
查看數據:
1,article表
4294967295 name1
2,article_comment表
1 text1 4294967295
2 text2 4294967295可以看出,本來第二個插入的評論想關聯另一個文章,但是卻關聯到了第一篇文章,這是因為Mysql的Data Truncation截斷的原因。
show warnings顯示
Warning | 1265 | Data truncated for column 'article_id' at row 1造成:
1,評論關聯到錯誤的文章
2,同一篇文章關聯到許多的評論(這會造成性能問題)
解決方法:
復制代碼 代碼示例:
set sql_mode='STRICT_ALL_TABLES';
insert into article_comment(text,article_id) values('text1',12345678903);
這會報錯:
[SQL] insert into article_comment(text,article_id) values('text1',12345678903);
[Err] 1264 - Out of range value for column 'article_id' at row 1如此,便避免了上述問題的出現。
總結
以上是生活随笔為你收集整理的mysql数据被截断_有关Mysql数据截断问题的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arduino无源蜂鸣器歌曲编码_Ard
- 下一篇: python terminator_Py