diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
index e033bd5..c5b6f3e 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
@@ -137,7 +137,7 @@ protected function createTableSql($name, $table) {
   protected function createFieldSql($name, $spec) {
     $sql = "`" . $name . "` " . $spec['mysql_type'];
 
-    if (in_array($spec['mysql_type'], array('VARCHAR', 'CHAR', 'TINYTEXT', 'MEDIUMTEXT', 'LONGTEXT', 'TEXT'))) {
+    if (in_array($spec['mysql_type'], array('VARCHAR', 'CHAR', 'TINYTEXT', 'MEDIUMTEXT', 'LONGTEXT', 'TEXT', 'BINARY'))) {
       if (isset($spec['length'])) {
         $sql .= '(' . $spec['length'] . ')';
       }
@@ -211,6 +211,10 @@ protected function processField($field) {
       $field['mysql_type'] = $map[$field['type'] . ':' . $field['size']];
     }
 
+    if (isset($field['type']) && $field['type'] == 'uuid' && !isset($field['length'])) {
+      $field['length'] = 36;
+    }
+
     if (isset($field['type']) && $field['type'] == 'serial') {
       $field['auto_increment'] = TRUE;
     }
@@ -233,6 +237,8 @@ public function getFieldTypeMap() {
       'text:big'        => 'LONGTEXT',
       'text:normal'     => 'TEXT',
 
+      'uuid:normal'     => 'BINARY',
+
       'serial:tiny'     => 'TINYINT',
       'serial:small'    => 'SMALLINT',
       'serial:medium'   => 'MEDIUMINT',
diff --git a/core/lib/Drupal/Core/Database/Schema.php b/core/lib/Drupal/Core/Database/Schema.php
index 6a1b0dd..3812449 100644
--- a/core/lib/Drupal/Core/Database/Schema.php
+++ b/core/lib/Drupal/Core/Database/Schema.php
@@ -44,7 +44,7 @@
  *       description might contain "Always holds the largest (most
  *       recent) {node_field_revision}.vid value for this nid."
  *     - 'type': The generic datatype: 'char', 'varchar', 'text', 'blob', 'int',
- *       'float', 'numeric', or 'serial'. Most types just map to the according
+ *       'float', 'numeric', 'uuid', or 'serial'. Most types just map to the according
  *       database engine specific datatypes. Use 'serial' for auto incrementing
  *       fields. This will expand to 'INT auto_increment' on MySQL.
  *     - 'mysql_type', 'pgsql_type', 'sqlite_type', etc.: If you need to
@@ -118,6 +118,7 @@
  *   'description' => 'The base table for nodes.',
  *   'fields' => array(
  *     'nid'       => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
+ *     'uuid'      => array('type' => 'uuid', 'not null' => FALSE),
  *     'vid'       => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE,'default' => 0),
  *     'type'      => array('type' => 'varchar','length' => 32,'not null' => TRUE, 'default' => ''),
  *     'language'  => array('type' => 'varchar','length' => 12,'not null' => TRUE,'default' => ''),
@@ -144,6 +145,7 @@
  *     'translate'           => array('translate'),
  *   ),
  *   'unique keys' => array(
+ *     'uuid' => array('uuid'),
  *     'vid' => array('vid'),
  *   ),
  *   'foreign keys' => array(
