🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

解決済

1回答

354閲覧

ターミナルでrails db:migrateを実行するとエラーが発生する。

s05098st

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/25 09:03

前提・実現したいこと

プログラミングを勉強中の初心者です。こちらに初めて書き込みさせて頂きます。
現在自作のアプリを作成中で、ログインして登録した上で日本酒を検索できるアプリを作っております。userモデルを作成して、テーブルを作成する為に、
rails g devise userを実行しました。その後、rails db:migrateを実行したところ、
ターミナル上でエラーが発生しました。下記にエラーを記述します。

発生している問題・エラーメッセージ

rails aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38) /Users/ユーザー名/projects/アプリ名/bin/rails:9:in `<top (required)>' /Users/ユーザー名/projects/アプリ名/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)

該当のソースコード

Ruby on Rails 20210225065051_devise_create_users.rb # frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end ------------------------------------------------------------------ ユーザー名/bin/env ruby #!/usr/bin/env ruby begin load File.expand_path('../spring', __FILE__) rescue LoadError => e raise unless e.message.include?('spring') end APP_PATH = File.expand_path('../config/application', __dir__) require_relative '../config/boot' require 'rails/commands' ------------------------------------------------------------------- ユーザー名/bin/spring #!/usr/bin/env ruby # This file loads Spring without using Bundler, in order to be fast. # It gets overwritten when you run the `spring binstub` command. unless defined?(Spring) require 'rubygems' require 'bundler' lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) spring = lockfile.specs.detect { |spec| spec.name == 'spring' } if spring Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path gem 'spring', spring.version require 'spring/binstub' end end

試したこと


Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)が出ていた為、mysql.server startを試しました。しかし、Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザー名noAir.pid).と表示されてしまいました。


ウェブサイトで調べてmysql.server restartを実行してみました。しかし、
ERROR! MySQL server PID file could not be found!
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザー名noAir.pid).
ユーザー名@ユーザー名noAir アプリ名 % touch /usr/local/var/mysql/アプリ名.local.pid
ユーザー名@ユーザー名noAir アプリ名 % rails db:migrate
rails aborted!と表示されました。


pidファイルがないと表示があった為、pidファイルが存在するか確認しました。
ターミナル上にcd /usr/local/var/mysqlを入力し、lsを入力して確認したところ、
「アプリ名.local.pid」の存在を確認しました。


mysql --versionのコマンドを入力し、バージョンを確認しました。
mysql Ver 14.14 Distrib 5.6.50, for osx10.15 (x86_64) using EditLine wrapperと確認しました。私の知る限り、更新されていないと思います。
また、Sequel Proの接続ボタンをクリックすると、MySQL の応答: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
と表示され、接続できない状態です。

補足情報(FW/ツールのバージョンなど)

MacBookAirで、カタリナを使用しております。

現在勉強を初めて約2ヶ月が経過するのですが、この様な状態を初めてみました。
調べてみましたが、解決できませんでした。どなたかお知恵を貸して頂けませんでしょうか。
宜しくお願い致します。

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

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

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

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

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

siruku6

2021/02/25 09:17

ruby on rails の問題ではなくて、 mysqlの問題のようですね。 私はMacユーザーではないのでよくわからないのですが、試しにこの記事の通りにしてみてはいかがでしょう? https://qiita.com/makuramoto1/items/52159370d00bef708595 sockファイルを消せと言っていますね。
m.ts10806

2021/02/25 09:29

コマンドラインやDBアクセスツールからMySQLログインは確認できていますか?
winterboum

2021/02/25 12:09

「ログインして登録した上で」というところが引っかかります。 Mac上でやてますか? どこかのサーバーで(たとえばcloud9とか)でやってますか
guest

回答1

0

自己解決

ご紹介頂いたqiitaのコマンドを入力したところ、起動しました。
ありがとうございました。

投稿2021/02/26 01:20

s05098st

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問