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 アプレットの日付と時刻のコンポーネント (年、月、日、時間、分)

推薦する

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

Django 2.2 を MySQL データベースに接続する方法

1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...

WeChatアプレットがジグソーパズルゲームを実装

この記事では、WeChatアプレットでジグソーパズルゲームを実装するための具体的なコードを参考までに...

ショッピングカートのスライド削除効果を実装するReactネイティブサンプルコード

基本的にすべてのeコマースプロジェクトにはショッピングカートの機能があります。これはreact-na...

Vue3 テーブルコンポーネントの使用

目次1. Antデザインビュー1. 公式ウェブサイトアドレス2. 使い方3.電子書籍テーブルを表示す...

js を使用して過去 1 週間、1 か月、3 か月の時間を取得する簡単な例

目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...

CentOSはローカルyumソース/Alibaba Cloud yumソース/163yuanソースを設定し、yumソースの優先順位を設定します。

1. Centosイメージを使用してローカルのyumソースをビルドするCentOS をインストール...

Vue3.xはコンポーネント通信にmitt.jsを使用します

目次クイックスタート使い方基本原則Vue2.x はコンポーネント通信に EventBus を使用しま...

Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

CentOS 7 で MySQL 5.7.23 をアップグレードする際の落とし穴と解決策

序文最近、CentOS 7 で MySQL 5.7.23 をアップグレードする際に落とし穴を発見しま...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

Vueはechart円グラフの凡例のパーセンテージを表示するメソッドを実装します

この記事では主に、echart を使用してパーセンテージを表示する Vue の円グラフデータ部分を紹...