senseIY
@senseIY (I Y)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

rails db:createでエラーが出てしまう

解決したいこと

Ruby on Railsを参考に学習中の入門者です。データベースにsqlite3ではなくmysqlを使おうと考え、試行錯誤していたのですが、エラーの解決方法が分からず詰まってしまいました。

発生している問題・エラー

・
・
・
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Couldn't create 'db/development.mysql2' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
・
・
・

全体の流れ

まずはじめにrails db:createをすると


Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Couldn't create 'db/development.mysql2' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


のようになってしまいました。ここから 
sudo touch /tmp/mysql.sock
をすると、エラーの番号が13に変わっただけでエラーは解決しなかったのでさらに
sudo chmod 777 /tmp/mysql.sock
をすると、一番上のエラーと同様に111番号エラーになりここから改善しません。

解決するために何をしたか

このエラーに関する記事を10件以上見たのでそこから疑問に思ったことやエラーの原因の推測などを書きます。*XXXは名前を隠しています
まず、mysqlサーバーがスタートしていないのではないかと思い、操作をしたのですが、なぜか

➜  dictation_app git:(make-frame) ✗ sudo mysql.server restart
[sudo] XXX のパスワード: 
sudo: mysql.server: コマンドが見つかりません
➜  dictation_app git:(make-frame) ✗ sudo mysql.server start
sudo: mysql.server: コマンドが見つかりません
➜  dictation_app git:(make-frame) ✗ apt mysql.server start
E: 不正な操作 mysql.server

のようになってしまいます。(ですが、aptコマンドなしだと

dictation_app git:(make-frame) ✗ mysql.server start
Starting MySQL

のようになぜか動きます。sudoつけると動かないです。)

また、mysqldがインストールされていないのではないかと思い、コマンドを入力しても

➜  dictation_app git:(make-frame) ✗ apt install mysql-community-devel
E: ロックファイル /var/lib/dpkg/lock-frontend をオープンできません - open (13: 許可がありません)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
➜  dictation_app git:(make-frame) ✗ sudo apt install mysql-community-devel
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ mysql-community-devel が見つかりません
➜  dictation_app git:(make-frame) ✗ systemctl status mysqld
Unit mysqld.service could not be found.
➜  dictation_app git:(make-frame) ✗ apt install mysqld
E: ロックファイル /var/lib/dpkg/lock-frontend をオープンできません - open (13: 許可がありません)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
➜  dictation_app git:(make-frame) ✗ sudo apt install mysqld
[sudo] XXX のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ mysqld が見つかりません
➜  dictation_app git:(make-frame) ✗ systemctl status mysqld
Unit mysqld.service could not be found.

のようになってしまいます。

その他疑問点など

・sqlite3でdb:createしたあとにmysqlに変えようとしたことが原因かと考えたのでsqlite3のアンインストールをした。
・mariadbはインストールしていない
・mysqlアンインストール時にmysqlサーバーはインストールされていないのでアンインストールする必要はないという趣旨のメッセージが出た
・sudo touch /tmp/mysql.sock をするとエラー番号は2から13に変わったが、本体を再起動するとまたエラー番号が2に戻ってしまうのでまたsudo touch /tmp/mysql.sock をしないといけないのはおかしいような気がした。また、database.ymlファイルのsocketとも合っている。

 一応自分の考えをのせておこうと考えたので文章がグチャグチャしていて何を言っているか分かりにくい部分があるかもしれません。その際はご指摘していただけるとありがたいです。
 何かアドバイスがあれば教えていただきたいです。よろしくお願い致します。

0

No Answers yet.

Your answer might help someone💌