次のようなMySQLのテーブルでSET
cust_faxとして:
cust_fax integer(10) NOT NULL,
そして、私はこのような値を挿入します:
INSERT INTO database values ('3172978990');
しかし、それは言う
列の値が「エラー1264」です
そして、私はエラーがどこにあるのか知りたいですか?私のセット?または他の?
どんな答えでも大歓迎です!
3172978990の値は2147483647(INT
の最大値)より大きいため、エラーです。 MySQL整数型とその範囲は ここにリストされています です。
また、INT(10)
の(10)
は整数の「サイズ」を定義しないことに注意してください。列の 表示幅 を指定します。この情報は助言のみです。
エラーを修正するには、データ型をVARCHAR
に変更します。電話番号とFAX番号は文字列として保存する必要があります。 この説明 を参照してください。
データ型をbigIntに変更することもできます。これにより問題が解決します。必要でない限り、整数を文字列として保持することはお勧めできません。 :)
ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;
intデータ型の長さを超えています。 UNSIGNED属性を使用して、その値をサポートできます。
SIGNED INTは2147483647までをサポートでき、NSIGNED INTではこれより2倍を許可します。この後も、長さ10でCHARまたはVARCHARを使用するよりもデータを保存したい
AUTO_INCREMENT
が範囲外にないことを確認してください。その場合は、次を使用して新しい値を設定します。
ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number
AUTO_INCREMENT
には、データ型で許可される最大値より大きい数値を含めることができます。これは、後で空にしたテーブルを埋めたが、AUTO_INCREMENT
が同じままであった場合に発生する可能性がありますが、異なる理由もあります。この場合、新しいエントリのIDは範囲外になります。
これが問題の原因である場合、AUTO_INCREMENT
を最新の行のIDよりも大きい値に設定することで修正できます。したがって、最新の行の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';