diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md
index 51f5ebd..619403e 100644
--- a/framework/CHANGELOG.md
+++ b/framework/CHANGELOG.md
@@ -93,6 +93,7 @@ Yii Framework 2 Change Log
 - Enh #2124: Added support for UNION ALL queries (Ivan Pomortsev, iworker)
 - Enh #2132: Allow url of CSS and JS files registered in yii\web\View to be url alias (cebe)
 - Enh #2144: `Html` helper now supports rendering "data" attributes (qiangxue)
+- Enh #2156: `yii migrate` now automatically creates `migrations` directory if it does not exist (samdark)
 - Enh: Added `favicon.ico` and `robots.txt` to default application templates (samdark)
 - Enh: Added `Widget::autoIdPrefix` to support prefixing automatically generated widget IDs (qiangxue)
 - Enh: Support for file aliases in console command 'message' (omnilight)
diff --git a/framework/console/controllers/MigrateController.php b/framework/console/controllers/MigrateController.php
index ab0c6b4..b72e9cc 100644
--- a/framework/console/controllers/MigrateController.php
+++ b/framework/console/controllers/MigrateController.php
@@ -14,6 +14,7 @@ use yii\console\Controller;
 use yii\db\Connection;
 use yii\db\Query;
 use yii\helpers\ArrayHelper;
+use yii\helpers\FileHelper;
 
 /**
  * This command manages application migrations.
@@ -105,15 +106,16 @@ class MigrateController extends Controller
 	 * This method is invoked right before an action is to be executed (after all possible filters.)
 	 * It checks the existence of the [[migrationPath]].
 	 * @param \yii\base\Action $action the action to be executed.
+	 * @throws Exception if db component isn't configured
 	 * @return boolean whether the action should continue to be executed.
-	 * @throws Exception if the migration directory does not exist.
 	 */
 	public function beforeAction($action)
 	{
 		if (parent::beforeAction($action)) {
 			$path = Yii::getAlias($this->migrationPath);
 			if (!is_dir($path)) {
-				throw new Exception("The migration directory \"{$path}\" does not exist.");
+				echo "";
+				FileHelper::createDirectory($path);
 			}
 			$this->migrationPath = $path;