1231년 몽고 원수 살례타(撒禮塔)가 압록강을 건너 함신진(咸新鎭 : 義州郡)을 함락시키고 철주(鐵州 : 鐵山郡)를 거쳐 구주(龜州 : 평안북도 구성)를 공격하였으나, 서북면병마사 박서(朴犀), 정주분도장군(靜州分道將軍) 김경손(金慶孫)의 분전으로 물러나고 말았다.
몽고군의 일부는 서경을 공격하다가 또한 이기지 못하고 계속 남하하여 황주(黃州)·봉주(鳳州 : 황해도 봉산)를 거쳐 개성 4문 밖에 진을 쳤고, 또다른 일부는 용주(龍州 : 평안북도 용천)·선주(宣州 : 평안북도 선천)·곽주(郭州 : 평안북도 정주군 곽산면)를 함락하고 다시 구주를 공격하였으나 이기지 못하였다.
이 때 고려의 3군(中軍·左軍·右軍)은 안북성에 이르러 진을 쳤다. 마침내 몽고군이 이르러 성을 포위하고 공격해왔으나, 3군은 전의를 상실하고 싸우려 하지 않았다.
이에 후군의 진주(陣主) 대집성(大集成)이 나가 싸울 것을 강요하자 3군이 성밖으로 나가 진을 쳤으나, 다른 진주와 지병마사(知兵馬事) 등은 모두 나오지 않고 성에 올라가서 바라보기만 하므로 대집성도 또한 성안으로 들어왔다.
이에 지휘책임자가 없는 3군이 적과 싸웠는데, 우군이 먼저 몽고군에게 무너지고 중군이 이를 구원하다가 또한 무너져 성안으로 들어오니 병력의 절반 이상이 전사 또는 부상을 입었으며, 장군 이언문(李彦文)·정웅(鄭雄)과 우군판관 채식(蔡識) 등이 전사하였다.
구주에서 박서 등이 중심이 되어 재차 대공세를 취하여오는 몽고군을 크게 무찔러 성을 굳게 지킨 것과는 좋은 대조가 된다.