1. ホーム
  2. データベース

mysql データが長すぎて列 xxx の解決策にならない

2022-03-01 20:22:47

        SQLException: データの切り捨てです。1行目の列 '****' のデータが長すぎる クエリ、長い時間のためのクエリ、唯一のデータベースの文字セット エラーを見つけることです。それを整理した後、解決策は、次のとおりです。

最初の解決策







からです。 http://www.blogjava.net/zoninge/archive/2009/04/15/265663.html ブロガーの皆さん、ありがとうございました。



mysql5へのページで。 0は、中国語のデータプロンプトの失敗を挿入すると、マネージャにSQLステートメントをコピーして、データベースのプロンプトのデータが長すぎる列"タイトル&quot。 は、私は中国の文字に変更したり、同じメッセージをプロンプトに、英語に変更し、もう一度試して、正常な、それは問題を除いて文字セットであるべきですが、データベースはDEFAULT_CHARSETを選択して作成された、それはフィールド問題であるべきである。



MySQLのインストールディレクトリにあるmy.iniファイルで、以下のように文字セットを設定します(修正後はMySQLサービスを再起動した方がよいでしょう)。



    [mysql]です。



    デフォルトキャラクターセット=gbk



    [mysqld]です。



    デフォルトキャラクタセット=gbk



または、my.iniで検索してください。



sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"



を入れます。



strict_trans_tablesを使用します。



削除して、mysqlを再起動すればOK!



    テーブルとフィールドの両方のcharsetプロパティをgbkに変更します。



    各 MySqlCommand Execute ステートメントで、SQL ステートメントまたはパラメータに中国語が含まれている場合、または返されたレコードセットに中国語がある場合 (Select のクエリーステートメントを参照)、この Execute の SQL ステートメントの前に SET NAMES GBK; を追加してください。







第二の解決策







http://www.cnblogs.com/amboyna/archive/2008/04/21/1163110.html



ブロガーの皆さん、ありがとうございました。







データが長すぎて列 xxx の解決策にならない







phpmyadminの接続に失敗したときに、Update:mysql5ステートメントが実行される。



SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('[newpassword]');







先ほど、データのインポート時に、navicatがエラーを報告しました。



1 行目の列 'ip' のデータが長すぎます。



ヒント:ipフィールドのデータが長すぎる







データ型が正しくない場合も、4.*の自動変換とは異なり、エラーになります。



sendQuery:Incorrect datetime value: 'unknown' for column 'date' at row 1











データ型 x (int 11)だとおかしいかもしれません。



a (x) に値 ('a') を挿入します。



表示されます。



1行目の列 'x' で調整された範囲外の値







a (x) の値 ('11a') に挿入します。



表示されます。



1行目の列 'x' でデータが切り捨てられた







解決策



my.iniの中にある



sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"



を入れます。



strict_trans_tablesを使用します。



削除して、mysqlを再起動すればOK! 



参考ブロガー取得:トラックバック:[url] http://tb.blog.csdn.net/TrackBack.aspx?PostId=2032186[/url]











MySQL 5 の varchar フィールドタイプの長さの定義については、こちらをご覧ください。











原文が若干横取りされています。



http://hi.baidu.com/mcspring/blog/item/63f0dea25e8e7baacbefd0ad.html







私はこの機会にMySQL5のドキュメントを注意深く読み直したところ、varcharフィールドタイプについて次のように記述されていました: varchar(m) Variable-length string. mは最大列長を示します。







なぜこのような変換をするのか?慎重に下を読み進めないとこの記述が見つからないので、本当にMySQLのマニュアルは不親切すぎると感じます。MySQL 5.1 は標準 SQL 仕様に従い、VARCHAR 値から末尾のスペースを削除しない。varchar はプレフィックス + 1 バイトまたは 2 バイトのデータで保存される。VARCHAR カラム宣言が 255 より長い場合、長さのプレフィックスは 2 バイトになります。







OK、少しは理解できたようです。しかし、具体的には、長さが255より大きいときは2バイト長のプリフィックスを使うと言ったこと、小学校の引き算の問題:65535 - 2 = 65533あ。こんなでかい牛がどうやって計算するのか、とりあえず疑問は残りますよね。







注:UTF8エンコーディングでテストしたところ、varcharの最大長は21854バイトでした。 



------------------------------------------------------------------



文字が悪いのかもしれない 上記のどれでも問題は解決しました。データ型をlongtextに変更したら、長さは設定しなくてもOKになりました。