// Check this is MySQL.
if ($connection->
databaseType() !== 'mysql'
) { throw new \
RuntimeException('This script can only be used with MySQL database backends.'
);
} $query =
$connection->
query("SHOW FULL COLUMNS FROM {" .
$table . "}"
);
$definition =
[];
while (($row =
$query->
fetchAssoc()) !== FALSE
) { $name =
$row['Field'
];
// Parse out the field type and meta information.
preg_match('@([a-z]+)(?:\((\d+)(?:,(\d+))?\))?\s*(unsigned)?@',
$row['Type'
],
$matches);
$type =
$this->
fieldTypeMap($connection,
$matches[1
]);
if ($row['Extra'
] === 'auto_increment'
) { // If this is an auto increment, then the type is 'serial'.
$type = 'serial';
} $definition['fields'
][$name] =
[ 'type' =>
$type,
'not null' =>
$row['Null'
] === 'NO',
];
if ($size =
$this->
fieldSizeMap($connection,
$matches[1
])) { $definition['fields'
][$name]['size'
] =
$size;
}