gorm で MySql データベースを操作する方法

gorm で MySql データベースを操作する方法

1. テーブル内のフィールドの大文字と小文字の区別を設定する

gorm クエリを使用する場合、MySQL はデフォルトで大文字と小文字を区別しないため、アカウント名Aa は同じになる可能性があります。

1. 問題の原因

MySQL はWindowsでは大文字と小文字を区別しません。
Linux でのMySQL データベース名、テーブル名、列名、およびエイリアスの大文字と小文字の規則は次のとおりです。

1. データベース名とテーブル名では大文字と小文字が厳密に区別されます。
2. テーブル別名では大文字と小文字が厳密に区別されます。
3. 列名と列エイリアスでは、大文字と小文字は区別されません。
4. 変数名も厳密に大文字と小文字が区別されます。

MySQL は、文字列をクエリするときに大文字と小文字を区別しません。MySQL をコンパイルする場合、通常、デフォルトの文字セットとして ISO-8859 文字セットが使用されます。この文字セットは大文字と小文字を区別しません。そのため、比較プロセス中に中国語でエンコードされた文字の大文字と小文字が変換されると、この現象が発生します。

2. MySQLのソートルール

utf8_bin は、大文字と小文字を区別して、文字列内の各文字をバイナリ データとして保存します。 utf8_genera_ci は大文字と小文字を区別しません。ci は case insensitive の略語で、大文字と小文字を区別しないことを意味します。 utf8_general_cs は大文字と小文字を区別します。cs は case sensitive の略語です。 (注意: MySQL 5.6.10 では、utf8_genral_cs はサポートされていません!!!

3. 解決策

1. バイナリキーワード

SQL クエリ ステートメントを変更し、クエリするフィールドの前にバイナリ キーワードを追加するだけです。 (非推奨)

1. 各条件の前にバイナリキーワードを追加します

バイナリ ユーザー名 = 'admin'、バイナリ パスワード = 'admin' の場合、ユーザーから * を選択します。

2. パラメータをバイナリ('')で囲みます。

select * from user where username like binary('admin') and password like binary('admin');

2. 照合プロパティを変更する

テーブルを作成するときは、テーブルの collat​​e プロパティを utf8_general_cs または utf8_bin に直接設定します。テーブルがすでに作成されている場合は、フィールドの Collat​​ion プロパティを utf8_general_cs または utf8_bin に直接変更します。

1. テーブル構造を変更する

ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

2. フィールドを変更する(テーブル内のフィールドを大文字と小文字を区別するように設定するには、 gormを使用します)

`gorm:"unique" sql:"type:VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin"`

gorm を使用して MySql データベースを操作する方法についてのこの記事はこれで終わりです。 gorm を使用して MySql データベースを操作する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • golang gorm mysql と gorm の基本的な使い方
  • MySQL での gORM 操作の実装

<<:  HTML の ReadOnly と Enabled の違い

>>:  WeChat アプレットの日付と時刻のコンポーネント (年、月、日、時間、分)

推薦する

Dockerの核となる原則であるCgroupの詳細な説明

カーネル内の強力なツール cgroup は、NameSpace によって分離されたリソースを制限でき...

ネイティブ js が携帯電話のプルダウン更新を模倣

この記事では、携帯電話のプルダウンリフレッシュを模倣したjsの具体的なコードを参考までに共有します。...

MySQLデータベースは重複データを削除し、メソッドインスタンスを1つだけ保持します

1. 問題の紹介ユーザー テーブルに 3 つのフィールドが含まれているシナリオを想定します。 id、...

Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順

目次1. CentOS 7.9 20にDockerをインストールする2. MySQL クラスターをデ...

MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

目次MySQL NDB Clusterとはクラスター構築のための準備作業クラスターのデプロイを開始す...

MySQLはフィールドからカンマ区切りの値を取り出して新しいフィールドを形成します

1例: 図1のフィールドを図2に分割するには アカウントIDを選択、 サブストリングインデックス(サ...

MySQL 5.7 で my.ini ファイルが見つからない場合の解決策

my.ini とは何ですか? my.ini は、MySQL データベースで使用される設定ファイルです...

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

Vue 仮想リストの実例

目次序文デザイン成し遂げるまとめ序文最近は、いつも延々とスワイプしています。 Weibo をチェック...

Mysql 5.6.37 winx64 インストール デュアル バージョン mysql ノート

マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...

クールなIoT大画面機能を実現するHTML+VUEページング

効果デモ.html <html> <ヘッド> <メタ文字セット=&qu...

表のセル間隔とセルパディングの違いの詳細な説明

テーブルとは何ですか?セルセルで構成されています。表では、<td> の数は、<tr...

MySQLはinet_atonとinet_ntoaを使用してIPアドレスデータを処理します。

この記事では、適切な形式を使用して IP アドレス データをデータベースに保存し、IP アドレスを簡...

CSS で要素を中央揃えにする N 通りの方法

目次序文インライン要素の中央揃えテキストを垂直に中央揃え要素を水平方向に中央揃えにするブロックレベル...

HTML で入力ボックスに純粋な数字のみを入力するように制限する方法

inputボックスを純粋な数字のみに制限する1、onkeyup = "value=valu...