create_table unsigned

Started by inter, April 11, 2017, 05:16:20 AM

Previous topic - Next topic

inter

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?
Sorry for my English

Arantor

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.

inter

#2
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 ' : '';
Sorry for my English

albertlast

size 5 make no sense in this context,
please keep this information empty.


Advertisement: