28

エラー コード: 1406。列に対してデータが長すぎます

CREATE  TABLE `TEST` 
(

  `idTEST` INT NOT NULL ,

  `TESTcol` VARCHAR(45) NULL ,

  PRIMARY KEY (`idTEST`) 
);

Insertいくつかの値

INSERT INTO TEST
VALUES
(
    1,
    'Vikas'
)

select 

SELECT * FROM TEST;

以上のレコードを挿入していますlength

INSERT INTO TEST
VALUES
(
    2,
    'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)

もし私たちselectlength

SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')

 '47'

そして、それはエラーメッセージを表示しています

エラー コード: 1406。列に対してデータが長すぎます

しかし、私の期待は、テーブルに少なくとも最初の 45 文字を挿入したいということです

質問が明確でない場合はお知らせください。

このエラーの原因はわかっています。データ型の長さを超える値を挿入しようとしています。

で可能なので、MySQL での解決策が必要ですMS SQLだから私はそれがMySQLにもあることを願っています。

4

10 に答える 10

74

MySQL は、指定された列幅を超える挿入値を切り捨てます。

SQL modeエラーなしでこれを行うには、使用しないように切り替えてみてくださいSTRICT

Mysql リファレンス マニュアル


編集:

モードを変更するには

これには、次の 2 つの方法があります。

  1. my.iniMySQL インストール ディレクトリ内の(Windows) または(Unix) ファイルを開きmy.cnf、テキスト「sql-mode」を探します。

探す:

コード:

# Set the SQL mode to strict 
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

と置換する:

コード:

# Set the SQL mode to strict 
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

または

  1. phpMyAdmin などのデータベース管理ツール内で SQL クエリを実行できます。

コード:

SET @@global.sql_mode= '';
于 2013-04-11T12:56:31.837 に答える
0

SQL データベースの制限を確認してみてください。この行のフィールド制限を超えている可能性があります。

于 2015-07-23T14:49:58.507 に答える
0

Django でイメージフィールドを使用しているときに同じエラーが発生しました。 post_picture = models.ImageField(upload_to='home2/khamulat/mydomain.com/static/assets/images/uploads/blog/%Y/%m/%d', height_field=None, default=None, width_field=None, max_length=None)

上記のように余分なコードを削除しただけ post_picture = models.ImageField(upload_to='images/uploads/blog/%Y/%m/%d', height_field=None, default=None, width_field=None, max_length=None) で、エラーはなくなりました

于 2020-10-07T14:42:24.267 に答える