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アプレットの例

推薦する

Dockerコンテナを介してランプアーキテクチャを構築するプロセス

目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...

HTML メタタグの小さなコレクション

<Head>……</head> は <HTML> のファイル ヘ...

MySQLクエリ制御ステートメントの詳細なグラフィック説明

mysql クエリ制御ステートメントフィールド重複排除 **キーワード: 明確** 構文: テーブル...

MySQL でのバイナリ型操作

この記事は主にMySQLデータベースのバイナリ型操作を紹介し、具体的な内容を通して紹介します。MyS...

css-loader を使用して vue-cli で css モジュールを実装する

【序文】 Vue と React の CSS モジュール ソリューションはどちらも、実装にローダーに...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

HTML ファイルにファイルの内容を含める方法の概要

フォーラムでは、ネットユーザーから「HTML ファイル内の別の HTML ファイルの内容を読み取るこ...

JavaScript 関数型プログラミングの基礎

目次1. はじめに2. 関数型プログラミングとは何ですか? 3. 純粋関数(関数型プログラミングの基...

Nexus を使用して Docker リポジトリを作成する方法

公式の Docker レジストリを使用して作成されたウェアハウスでは、イメージを削除してもデフォルト...

Vue でよく使われる命令 v-if と v-show の違いを簡単に分析します。

目次序文1.v-ショー2.v-if 3. v-showとv-ifの違い1. 原則の違い2. アプリケ...

React NativeのScrollViewプルダウンリフレッシュ効果

この記事では、React Native ScrollViewのプルダウンリフレッシュ効果の具体的なコ...

JS ベースのページフローティングボックスを実装するためのサンプルコード

スクロール バーを下に引くと、主にposition:fixed;スタイルにより、フローティング ボッ...

MySQL のグループ分けの例

mysql のような php switch case ステートメント。 xxフィールドを選択、ケース...

Mybatisの各SQL文の実行時間の統計

背景最近、面接でデータベース トランザクションについてよく質問されます。通常は、@Transacti...

Centos 7 sshd の変更 | ルートログインの禁止と sshd ポートスクリプトの定義

1. 新しいユーザーwwweee000を作成します [root@localhost ~]# user...