MySQLで全角文字と半角文字を保存する場合の違い

MySQLで全角文字と半角文字を保存する場合の違い

残念ながら、社内の IM のテスト中に MYSQL_DATA_TRUNCATED エラーが再び発生し、mysql_stmt_fetch が呼び出されたときにログ レコードが表示されました。これまでの経験からすると、指定された結果セットのバインディング領域の長さが不十分なことが原因であるはずです。何度も繰り返し確認しましたが、問題は見つかりませんでした。コード内に対応する関係があります。たとえば、char(20)の場合、コード内でchar buffer[20]配列を定義して格納します。とても正しくて完璧に見えます。各データ行を印刷し、エラーのある行を見つけて、フォントが他のものと異なっていることを発見するしかありませんでした。例えば:

123456789(半角)
123456789(全角)

これは、スペースを入力することによって制御されるのではなく、全角と半角の入力方法によって制御されます。全角文字の場合、半角文字の 2 倍の長さになります。また、MySQL は utf-8 を使用しているため、データベースでは全角文字の長さは 3 バイトになります。

select length(column) from table_name where…;

これを使って長さを印刷するとわかります。このとき、全角文字や漢字など、コード内の型の長さとデータベース フィールドの長さを一致させる問題を考慮する必要があります。データベース内の char(20) は 20 バイトではなく 20 文字を表します。データを取得するときは、結果セットの長さとして 20 を使用しないように注意してください。

<<:  WeChatミニプログラムがシームレスなスクロールを実現

>>:  回転灯効果を実現するWeChatアプレットの例

推薦する

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします

目次DockerファイルドキュメントJenkins の設定Spring Boot プロジェクトでは、...

mysql 5.7.18 winx64 パスワード変更

MySQL 5.7.18 が正常にインストールされた後、バージョン 5.7 では空のパスワードでのロ...

MySQL 5.7.21 のインストールとパスワード設定のチュートリアル

MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...

Linux の who コマンド例の紹介

誰についてシステムにログインしているユーザーを表示します。 who コマンドを実行すると、現在システ...

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

Reactフック入門チュートリアル

ステートフック例: 'react' から useState をインポートします。 関...

Dockerコンテナデータボリュームの原理と使用法の分析

コンテナデータボリュームとはデータがコンテナ内にある場合、コンテナを削除するとデータは失われます。例...

JavaScript コンストラクタとプロトタイプの関係

目次1. コンストラクタとプロトタイプ1. コンストラクター2. コンストラクタ問題3. コンストラ...

React コードを共有するためのベストプラクティス

プロジェクトがある程度複雑になると、必然的にロジックの再利用の問題に直面することになります。 Rea...

Vue-Routerのインストールと使用方法の詳細な説明

目次インストールルーティングの基本構成Vue にルーターをインストールするルーターの設定Router...

dockerカスタムイメージでphp7をビルドする方法

まず、簡単な Docker インストールを実行します。イメージをカスタマイズするには、ベースイメージ...

Vue3のいくつかの利点についての簡単な説明

目次1. ソースコード1.1 モノレポ1.2 タイプスクリプト2. パフォーマンス2.1 ソースコー...

Vmvare 仮想マシンを使用して Ubuntu のルート ディレクトリをパーティション分割する方法の紹介

目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...