sql >> データベース >  >> RDS >> Mysql

MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderでのDataColumnMaxLengthの問題

    提供するリンクには、TEXTフィールドの場合、「値にマルチバイト文字が含まれていると、有効な最大長が短くなります。 "

    UTF-8はUnicode文字セットであり、データベースのデフォルトです。 ASCIIセットに一致する最初の128文字に1バイト表現を使用し、残りの文字に4バイト表現を使用します。

    これは、文字がASCIIであるかどうかに応じて、TEXT列に格納される文字の数を増減できることを意味します。

    これで、MySQLドライバーがこれを適切に処理せず、すべてのUTF-8文字が4バイト幅であると想定する場合に問題が発生します。 、および列の長さを4バイトで除算し、それを実際のフィールドの長さとしてDataTableに渡します。これは、あなたの場合のように、データベースにDataTableに収まらないテキストが含まれている可能性があることを意味します。

    問題の解決策(またはこの場合の回避策)は、これまでに行ったこととまったく同じです。つまり、列をMEDIUMTEXTやLONGTEXTなどのより多くの文字を含むことができるタイプに変更します。

    私の推測では、この決定はMySQLドライバーの実装を簡素化するために行われたと思いますが、Oracleにバグレポートを提出することを検討します。




    1. MySQLテーブルですべての大文字の文字列を見つける方法は?

    2. PHP開発者の観点から見たC#を使用したMySQL

    3. replicate-rewrite-dbには実際のアプリケーションがありますか?

    4. PostgreSQLスキーマ管理の基本