我有一些表在我的數據庫與類型BIGINT列: 設定值在PHP低於0讓0
的問題是,當我設置(通過更新或插入)值比0(對示例-2),然後在數據庫中設置爲0.
有人知道爲什麼嗎?
(我沒有任何程序在插入/更新之前更改此值)。 Db是MySql
我有一些表在我的數據庫與類型BIGINT列: 設定值在PHP低於0讓0
的問題是,當我設置(通過更新或插入)值比0(對示例-2),然後在數據庫中設置爲0.
有人知道爲什麼嗎?
(我沒有任何程序在插入/更新之前更改此值)。 Db是MySql
它看起來像你的數據庫實際上使用的是一BIGINT UNSIGNED
,其具有範圍爲0至18446744073709551615.而按照MySQL Reference Manual:
當外的範圍內的值被分配噸o整數列,MySQL存儲表示列數據類型範圍的相應端點的值。
這意味着試圖存儲在任何UNSIGNED
列中的負數將返回到0。
爲了解決這個問題,最好明確設置數據類型爲BIGINT SIGNED
。
您可以閱讀unsigned bigint和signed bigint之間的區別。 MySQL Bigint
無符號BIGINT值:0到18446744073709551615
而符號的BIGINT值:-9223372036854775808到9223372036854775807
所以,你必須使用符號的BIGINT
太棒了!非常感謝。 – DarSta
你正在使用一個unsigned int,它不允許使用負數。您可以在這裏閱讀:https://msdn.microsoft.com/en-us/library/ms187745.aspx關於SQL中的bigint –
的確如此。謝謝! – DarSta