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

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

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

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

Q&A

解決済

1回答

650閲覧

railsで作成中のアプリのdbをMySQLに変更したい。

hiroro0820

総合スコア13

MySQL

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

0グッド

1クリップ

投稿2019/12/23 10:23

編集2019/12/24 13:38

前提・実現したいこと

DBを途中からmysqlに切り替える
の記事を参考に
railsで作成中のアプリのdbをsqliteからmysqlに切り替える作業を行っております。

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

この際にrails db:migrateを行うと

rails aborted! Mysql2::Error::ConnectionError: Can't connect to MySQL server on 'localhost' (10061) bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)

とエラーを吐かれてしまいました。
調べてみたところ、すでにsqliteで作成したテーブルがあることが原因らしいとわかったのですが

解決するには、dbをリセットするしか手段はないのでしょうか?

該当コード

変更前database.yml

# SQLite. Versions 3.8.0 and up are supported. # gem install mysql2 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'mysql2' # default: &default adapter: mysql2 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.mysql2 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: db/test.mysql2 production: <<: *default database: db/production.mysql2

変更後

default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: host: localhost development: <<: *default database: peer_development # DBの名前。「sample」の部分をアプリの名前に変更すると分かりやい test: <<: *default database: peer_test # DBの名前。「sample」の部分をアプリの名前に変更すると分かりやい production: <<: *default database: peer_production username: peer_app password: <%= ENV['PEER_DATABASE_PASSWORD'] %>

エラー文は
イメージ説明

これです!!

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

ruby on rails 6

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

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

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

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

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

guest

回答1

0

ベストアンサー

「調べてみたところ、すでにsqliteで作成したテーブルがあることが原因らしい」
いやそれはないですね。
ConnectionError ですから MySQLにアクセス出来ない、と言ってます。

database.yml の 記述を確認してください。
わからなかったら、datase.yml を追加してください。パスワードは伏せ字で。

追記

こんな感じのが足りません。
database: development
username: 登録したユーザ名
password: そのパスワード
host: 127.0.0.1

今回のエラーは 接続できない ですので、一番下が足りない。
それが通ると、中二つがないので接続できない
それが通ると 一番上で、db/developmen.sqlit というのはMySQL(というかRDB一般)では許されないdatabase名です(多分)

投稿2019/12/23 10:35

編集2019/12/23 10:55
winterboum

総合スコア23329

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

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

hiroro0820

2019/12/23 10:46

回答ありがとうございます! テーブルがあることが問題じゃないんですね!! database.ymlを質問に、添付しました。 よろしくお願いします!
winterboum

2019/12/24 01:14

回答に追記してあります
hiroro0820

2019/12/24 04:31

username: root password: host: localhost を追加して、みたのですが、それでも通らなくて、、 現状のコードはっておきます!!
winterboum

2019/12/24 05:38

rootのパスワードは入れてありますか?
hiroro0820

2019/12/24 06:07

本当に初歩の質問なんですけど、 mysqlって、アカウントみたいなのを作らないと使えないんですか?!! いままでrailsにインストールしたときにデフォルト入ってるもの しか使ったことがなくて、勝手がまったくわからないんです、、。
winterboum

2019/12/24 06:11

インストールした時のユーザでも使えますが、railsで使うときはパスワード無しでできたかなぁ、、、 やったことない。 「それでも通らない」とはどういうエラーになります?
hiroro0820

2019/12/24 13:34

mysqlをインストールしなおして、passを設定したら、 localhostにはつながるようになりました!! でも、またわけのわからないエラーが出てきてしまいました、、 エラー文はっておきます。。。
winterboum

2019/12/24 13:37

エラー文ないけど あ、 test: の方にも同じようなことはしておいてください。 developmentと(多くの場合)同時に処理されますから
hiroro0820

2019/12/24 13:40

いまはりました!!! 遅くなってごめんなさい、、 そうなのですね!!!ありがとうございます。
winterboum

2019/12/24 13:45

Windowsですか、ごめんなさいWindowsはよくわからない。 エラーメッセージもUTF-8ででてきてs-jisなwindowsの画面では読めなくなりますし。 Windowsだといろいろむずかしいことが起きるので、仮想サーバを立ててやることが薦められているようです。もしくはcroud9使うとか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問