質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

457閲覧

検索で、半角英数字では問題ないが全角(かな、カナ、漢字)でエラー発生

ko.nakamura

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/04/13 12:50

編集2021/04/13 12:56

##前提・実現したいこと
学習開始2ヶ月の初心者です。
検索フォームにて検索をしたいのですが、うまくいきません。
タイトル通り半角英数字では問題ないのですが、
全角(かな、カナ、漢字)でエラー発生します。
バリデーションは特に設けておりません。
##発生している問題・エラーメッセージ

ActiveRecord::StatementInvalid in Items#search Mysql2::Error: Illegal mix of collations for operation 'like' <% end %> <div class="search_item"> <% @items.each do |item| %>????ここが赤いです <div class="search_new_item"> <div class="arrival_day" > <%= item.arrival_day %>

##(searchに該当する)該当のソースコード

ruby

1routes.rb 2 3Rails.application.routes.draw do 4 devise_for :users 5 root to: "items#index" 6 resources :items do 7 collection do 8 get 'search' 9 end

ruby

1items_controller.rb 2 3 def search 4 @items = Item.search(params[:keyword]) 5 end

ruby

1item.rb 2 3 with_options presence: true do 4 validates :image 5 validates :name, length: { maximum: 50 } 6 validates :text, length: { maximum: 1000 } 7 validates :deployment 8 validates :arrival_day 9 end 10 validates :stock_id, numericality: { other_than: 1 } 11 12 def self.search(search) 13 if search != "" 14 Item.where('name LIKE(?) OR arrival_day LIKE(?)', "%#{search}%", "%#{search}%") 15 else 16 Item.all.order("arrival_day DESC").limit(10) 17 end 18 end

ruby

1migrate_create_items_rb 2 3class CreateItems < ActiveRecord::Migration[6.0] 4 def change 5 create_table :items do |t| 6 t.string :name, null: false 7 t.text :text, null: false 8 t.integer :stock_id, null: false 9 t.string :storage_location 10 t.string :deployment, null: false 11 t.date :arrival_day, null: false 12 t.timestamps 13 end 14 end 15end

##試したこと
Mysql2::Error: Illegal mix of collations for operation 'like'を検索して、似た様な記事は見つけたが同じようなものを探せませんでした。
初めてのタイプのエラーなので全く分からず困っていますので、ヒントだけでもいただけましたらお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/04/13 12:59

データベース側でSHOW CREATE TABLEや何かしらのツールで、テーブルの定義は確認できますか?
ko.nakamura

2021/04/13 13:06

maisumakun様 素早い返答ありがとうございます。 % mysql -u rootで mysql> SHOW CREATE TABLE itemsとうちましたが、 ->と出力されてしまいます。
maisumakun

2021/04/13 13:08

SHOW CREATE TABLE items;まで打ってみてください。
ko.nakamura

2021/04/13 13:16

申し訳ありません! ERROR 1046 (3D000): No database selected と出てきましたので、「use [データベース名];」を実行して以下の様に出ました! | items | CREATE TABLE `items` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `text` text NOT NULL, `stock_id` int(11) NOT NULL, `storage_location` varchar(255) DEFAULT NULL, `deployment` varchar(255) NOT NULL, `arrival_day` date NOT NULL, `created_at` datetime(6) NOT NULL, `updated_at` datetime(6) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
guest

回答1

0

ベストアンサー

arrival_dayのような、文字列でない列にLIKE検索をかけるのは、一般に妥当ではありません。

投稿2021/04/13 13:18

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ko.nakamura

2021/04/13 13:24

素早いご対応本当にありがとうございました!! 上記の事、全く知りませんでしたので大変勉強になりました。 また、自身の自走力不足も再度痛感いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問