Simple Machines Community Forum

SMF Development => Bug Reports => Fixed or Bogus Bugs => Topic started by: inter on April 11, 2017, 05:16:20 AM

Title: create_table unsigned
Post by: inter on April 11, 2017, 05:16:20 AM
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?
Title: Re: create_table unsigned
Post by: Arantor on April 11, 2017, 05:18:23 AM
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.
Title: Re: create_table unsigned
Post by: inter on April 11, 2017, 05:21:11 AM
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 ' : '';
Title: Re: create_table unsigned
Post by: albertlast on May 17, 2017, 04:58:45 PM
size 5 make no sense in this context,
please keep this information empty.
Title: Re: create_table unsigned
Post by: inter on May 18, 2017, 03:51:13 AM
https://github.com/SimpleMachines/SMF2.1/issues/4057#issuecomment-302325712