在《三国演义》中,关羽北伐襄樊时,因为吕蒙偷袭了荆州,后方失守,手下士卒的家眷也大多落入吴军之手,所以士卒们军心动摇,无心恋战,在关羽回军路上就跑了不少。后来关羽又被吴军伏兵截击,等到关平、廖化赶来杀入重围将他救出时,关羽手下只剩下了五六百人,无力再去夺取荆州,只能先退到麦城驻扎。
到了麦城以后,关羽召集将士商议对策,赵累建议这里靠近上庸,上庸有刘封、孟达率领大军驻守,可以派人前去求救,有了他们的接应,军心自然安定,可以等待刘备大军前来增援。关羽听从了赵累之计,命廖化杀出重围去上庸求救。
然而廖化到了上庸以后,刘封原本要出兵去救关羽,可是后来孟达却进谗言,说关羽开始反对刘备收刘封为义子,后来刘备立嗣时,关羽又以“螟蛉之子,不可僭立”为由,反对立刘封为王世子。刘封听了果然不悦,于是以“山城初附,民心未定”为由,拒绝出兵。
廖化听了再三哭求,刘封只是不愿。廖化无奈,只能大骂出城,赶往成都求救。只是成都路远,最后刘备得到消息时,关羽已经兵败被俘,遇害身亡。这也成为了后来刘备杀刘封的主要原因。
不过根据《三国志·刘封传》记载,历史上关羽兵败以后并没有派人去向刘封求救,而是在水淹七军围攻襄阳和樊城时,因为兵力不足,他曾经屡次派人去上庸,要求刘封、孟达发兵助战。但是刘孟二人以刚刚夺取上庸等地,不可轻易离开,拒绝从命。
自关羽围樊城、襄阳,连呼封、达,令发兵自助。封、达辞以山郡初附,未可动摇,不承羽命。
刘封和孟达的理由倒并非完全是借口。
《三国志·刘封传》中提到,汉中之战以后,刘备就命孟达从秭归北伐,攻占了房陵,斩杀了房陵太守蒯祺。随后孟达又继续向上庸进兵,刘备担心孟达兵少,难以取胜,于是命刘封率军沿沔水东进,和孟达共同攻打上庸。
上庸太守申耽畏惧蜀军兵势,于是主动投降,还将妻子、子女和宗族送到成都以为人质。申耽如此配合,刘备自然也不会亏待他,封他为征北将军,继续担任上庸太守,申耽的弟弟申仪被封为建信将军、西城太守。刘封则升为副军将军,坐镇上庸等地。
关羽北伐襄樊,也是在刘备夺取汉中以后,所以关羽和孟达应该是差不多同时进军的。只是上庸地处偏僻,魏军兵力薄弱,才很快平定,而襄阳、樊城是曹魏中原门户,有大将曹仁据守,之后曹操又命于禁带领大军来救,关羽才陷入苦战。因此关羽水淹七军时,刘封和孟达夺取上庸的时间也不长。
而且孟达原来手下不过四千,刘封兵力不详,但是刘备在汉中之战中也是惨胜,估计能给刘封的兵力不多,两人加起来估计都不到一万人。更何况上庸是不战而降,为了招揽人心,刘备让原来的申耽等人留任。这样刘封和孟达在留出足够人手,保证新占领的上庸安全、威慑申耽等人的同时,能抽调出多少人马去增援关羽,确实是一个很大的问题。
然而刘封拒绝出兵相助,很可能并非只是口头上说的这个原因。毕竟正常情况下,刘封兵力再紧张,也应该多少派遣一些兵马去做一下姿态,他拒绝得这么干脆,还因为心里有气。
在演义中,刘备有了刘禅以后,才收刘封为义子。不过历史上,刘备是因为到荆州时还没有子嗣,而自己年纪又大了,担心无后,所以将刘封收为义子,想作为自己的继承人。
先主至荆州,以未有继嗣,养封为子。
只是谁也没想到的是,刘备一大把年纪了,在荆州时居然又生了刘禅等人。所谓“疏不间亲”,刘备肯定更亲近自己亲生的儿子。后来他称汉中王的时候,也是立亲生的刘禅为王世子,刘封却被打发到了上庸这样的偏僻之处。
当然,刘备此举可能是为了避免刘封卷入政治斗争之中,才把他派到上庸,远离权力中心,也是出于好意。但是对于刘封来说,空有一个长子之名却不能继承刘备的基业,又近乎被流放在外,自然心中难免有些怨气,赌气不愿意去帮助关羽,也就不难理解了。
然而刘封也没想到,因为他不愿意派兵,后来关羽不得不从荆州抽调部分留守兵马北上,以增强前线兵力,这就给了吕蒙可乘之机。从这点来说,历史上和《三国演义》中一样,刘封、孟达要对关羽兵败身死一事承担一些责任。也难怪刘备后来会生气,并最终造成了刘封之死。