98

MySQLのテーブルでcust_faxを次のようにSET実行すると、次のようになります。

cust_fax integer(10) NOT NULL,

次に、次のような値を挿入します。

INSERT INTO database values ('3172978990');

しかしそれからそれは言う

`エラー1264`が列の値を超えています

そして、私はエラーがどこにあるのか知りたいですか?私のセット?または他?

どんな答えでも大歓迎です!

4

5 に答える 5

179

値 3172978990 は 2147483647 (の最大値) より大きいINTため、エラーになります。MySQL の整数型とその範囲は、こちらに一覧表示されています

(10)また、 inINT(10)は整数の「サイズ」を定義しないことに注意してください。列の表示幅を指定します。この情報は参考情報です。

エラーを修正するには、データ型を に変更しますVARCHAR。電話番号と FAX 番号は文字列として保存する必要があります。このディスカッションを参照してください。

于 2013-01-11T18:37:10.487 に答える
13

intデータ型の長さを超えています。UNSIGNED属性を使用してその値をサポートできます。

SIGNED INTは2147483647までサポートでき、UNSIGNED INTを使用するとこれよりも 2 倍になります。この後も、長さ 10 のCHARまたはVARCHARを使用するよりもデータを保存したい

于 2013-01-11T18:39:39.687 に答える
8

tl;dr

AUTO_INCREMENT範囲外でないことを確認してください。その場合、次のように新しい値を設定します。

ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number

説明

AUTO_INCREMENTデータ型で許可されている最大値より大きい数値を含めることができます。これは、後で空にしたテーブルをいっぱいにしAUTO_INCREMENTて同じままにした場合に発生する可能性がありますが、別の理由もある可能性があります. この場合、新しいエントリの ID は範囲外になります。

解決

これが問題の原因である場合はAUTO_INCREMENT、最新の行の ID よりも 1 大きい値に設定することで修正できます。したがって、最新の行の ID が 100 の場合:

ALTER TABLE table_name AUTO_INCREMENT=101

AUTO_INCREMENTの現在の値を確認するには、次のコマンドを使用します

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND   TABLE_NAME   = 'TableName';
于 2019-03-17T00:37:37.860 に答える
3

と連携:

ALTER TABLE `table` CHANGE `cust_fax` `cust_fax` VARCHAR(60) NULL DEFAULT NULL; 

于 2020-03-05T02:54:06.973 に答える