メール「test@gmail.com」をvarchar()またはtext()のいずれかであるDBに保存できるという奇妙な問題がありますが、メールに基づいて行を選択できません。別の識別子 (たとえば、「email_id」と呼ばれる主キー) を介して列を選択すると、ピリオドを含む電子メールを表示できます。また、「test@gmailcom」など、ピリオドを含まない varchar / text を含む email 列のある行を選択することもできます。
これをテスト DB とステージ DB に複製しました。クエリパネルからDBに直接挿入するときにこれをテストして複製したため、これもコードの問題ではありません。
私はそれをグーグルで試してみましたが、役に立ちませんでした。
編集:
varchar() や text() を正しく使用していますか? それは別のものであるべきですか?VarChar を使用するように述べている SO の投稿 (見つけられない) をいくつか見ました。
記録のために、挿入/選択にmysql WorkBenchを使用していますが、それによって違いが生じる場合があります。
編集2:
次の 2 つの記録があります。
client_id (PK, AI, INT, UNSIGNED), email (varchar(500), not null)
の表でclient_login
。
client_id = 1, email = 'test@gmail.com'
と
client_id = 2, email = 'test@gmailcom'
次の選択
select * from client_login where email='test@gmail.com'
0 行を返します
select * from client_login where email='test@gmailcom'
1 行を返します
編集3:
私もできる
select * from client_login where client_id=1
そして、それemail = 'test@gmail.com'
はピリオドが行にあるかのように見えますが、実際にはピリオドではないため、奇妙な行を表示します...