2012-10-10 14 views
10

私はt = t | 128を書こうとしましたが、範囲外のエラーがありました。私はtinyintが署名されていると思う。しかし、http://dev.mysql.com/doc/refman/5.5/en/numeric-types.htmlは、それが署名されていない可能性があると述べています(下記)。しかし、それはそれを無署名にする方法を述べていない。どうすればいいですか?mysql Tinyint as unsigned

Type  Storage Minimum Value  Maximum Value 
     (Bytes) (Signed/Unsigned) (Signed/Unsigned) 
TINYINT  1   -128     127 
          0      255 
SMALLINT 2   -32768     32767 
          0      65535 
MEDIUMINT 3   -8388608    8388607 
          0     16777215 
INT   4   -2147483648   2147483647 
          0     4294967295 
BIGINT  8  -9223372036854775808 9223372036854775807 
          0    18446744073709551615 

答えて

11

UNSIGNEDは、多くの種類に追加できる属性です。

DATA_TYPEdocumentationから

BIT[(length)] 
    | TINYINT[(length)] [UNSIGNED] [ZEROFILL] 
    | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] 
    | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] 
    | INT[(length)] [UNSIGNED] [ZEROFILL] 
    | INTEGER[(length)] [UNSIGNED] [ZEROFILL] 
    | BIGINT[(length)] [UNSIGNED] [ZEROFILL] 
    | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | DATE 
    | TIME 
    | TIMESTAMP 
    | DATETIME 
    | YEAR 
    | CHAR[(length)] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | VARCHAR(length) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | BINARY[(length)] 
    | VARBINARY(length) 
    | TINYBLOB 
    | BLOB 
    | MEDIUMBLOB 
    | LONGBLOB 
    | TINYTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | TEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | MEDIUMTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | LONGTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | ENUM(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | SET(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | spatial_type 
5

あなたは、キーワードunsignedと符号なしをマーク。例えば、テーブルを作成するときに、:

CREATE TABLE `example_table` (
    `example_col` tinyint(3) unsigned NOT NULL 
); 

ではなく、より多くの、 またはAlter tableためCreate Tableを参照してください。

1

まず、負の値で何かする必要があります。そうでない場合は、ALTER TABLE...UNSIGNEDがエラーをスローします。たとえば、すべての値を増やすことができます。

UPDATE table SET tiny_field = tiny_field + 128; 

次に、ALTER TABLEを使用してフィールドタイプ/オプションを変更します。

関連する問題