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

推薦する

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

Vueストレージにはブール値のソリューションが含まれています

Vueはブール値でストレージを保存します今日、問題に遭遇しました。バックグラウンドから返された真偽の...

IE8 と Chrome でテーブルの幅を修正する方法

IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...

Docker を使ってゼロから SOLO 個人ブログを構築する方法

目次1. 環境整備2. Dockerをインストールする3. MySQLマスタースレーブデータベースを...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

HTTP ステータス コード

このステータス コードは、リクエストのステータスに関する情報を提供し、サイトとリクエストされたページ...

MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

MySQL 論理アーキテクチャの概要他のデータベースと比較すると、MySQL は、そのアーキテクチャ...

nginx は画像表示の遅さとダウンロードの不完全さの問題を解決します

前面に書かれた最近、ある読者から、ブラウザからサーバーにアクセスすると、画像の表示が遅く、ブラウザに...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...

JavaScript のマイクロタスクとマクロタスクの説明

序文: js はシングルスレッド言語なので、非同期にすることは不可能です。しかし、js のホスト環境...

JavaScript を使用してページに動的な検証コードを実装する例

導入:現在、プログラム攻撃を防ぐために、ユーザーがログインまたは登録するときに多くの動的検証テクノロ...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

HTML におけるスクリプトの配置に関する簡単な説明

以前は、スクリプトは HTML 内のどこにでも配置できると思っていましたが、今日、要件に取り組んでい...

JS の原価と基準価額の問題に関する簡単な分析

プリミティブ値 -> プリミティブ型Number String Boolean undefin...

期間限定フラッシュセール機能を実装するJavaScript

この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...