SMF 2.0.13
php 5.6.30
mysql 5.7.12-log
Docs: http://wiki.simplemachines.org/smf/$smcFunc#db_create_table
// test
$columns = [
[
'name' => 'port',
'type' => 'smallint',
'size' => 5,
'unsigned' => true,
'null' => false,
'default' => 0,
]
];
$indexes = [
[
'type' => 'index',
'columns' => ['port'],
],
];
$smcFunc['db_create_table']('{db_prefix}_bug_test', $columns, $indexes, [], 'ignore');
offtop: how to set engine InnoDB for table with $smcFunc? set foreign key with $smcFunc?
Version of SMF?
There is no way to explicitly set InnoDB or foreign keys owing to the abstraction layer. You could just write the queries yourself and tell it to use the security override instead.
SMF 2.0.13
php 5.6.30
mysql 5.7.12-log
Solution:
file: .../Sources/DbPackages-mysql.php
find:
$unsigned = in_array($type, array('int', 'tinyint', 'smallint', 'mediumint', 'bigint', 'float')) && !empty($column_info['unsigned']) ? 'unsigned ' : '';
replace:
$unsigned = in_array($type, array('int', 'tinyint', 'smallint', 'mediumint', 'bigint', 'float')) && !empty($column['unsigned']) ? 'unsigned ' : '';
size 5 make no sense in this context,
please keep this information empty.
https://github.com/SimpleMachines/SMF2.1/issues/4057#issuecomment-302325712