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

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

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

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

3回答

927閲覧

sqlでデータベースにアクセスする方法

hase744

総合スコア57

SQL

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/09/02 01:04

編集2021/09/02 08:20

SQLでデータベースにアクセスしたいんですがあるはずのデータベースが見つかりません
railsでec_siteというデータベースを作ったんですが見当たりません。どうすればアクセスできますか?
環境はAWSのlinux
データベースはmariadb
言語はruby
フレームワークはrailsです

command

1[ec2-user@ip-10-0-0-235 ec_site]$ rails db:create RAILS_ENV=production 2Database 'ec_site' already exists 3[ec2-user@ip-10-0-0-235 ec_site]$ mysql -u root -p 4Enter password: 5Welcome to the MariaDB monitor. Commands end with ; or \g. 6Your MariaDB connection id is 12 7Server version: 5.5.68-MariaDB MariaDB Server 8 9Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. 10 11Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 12 13MariaDB [(none)]> SHOW DATABASES; 14+--------------------+ 15| Database | 16+--------------------+ 17| information_schema | 18| mysql | 19| performance_schema | 20+--------------------+ 213 rows in set (0.00 sec) 22MariaDB [(none)]> USE ec_site; 23ERROR 1049 (42000): Unknown database 'ec_site' 24

データベスの設定は以下の通りです

yml

1# SQLite. Versions 3.8.0 and up are supported. 2# gem install sqlite3 3# 4# Ensure the SQLite 3 gem is defined in your Gemfile 5# gem 'sqlite3' 6# 7default: &default 8 adapter: sqlite3 9 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 10 timeout: 5000 11 12development: 13 <<: *default 14 database: db/development.sqlite3 15 16# Warning: The database defined as "test" will be erased and 17# re-generated from your development database when you run "rake". 18# Do not set this db to the same as development or production. 19test: 20 <<: *default 21 database: db/test.sqlite3 22 23production: 24 <<: *default 25 #database: db/production.sqlite3 26 database: <%= Rails.application.credentials.db[:database] %> 27 username: <%= Rails.application.credentials.db[:username] %> 28 password: <%= Rails.application.credentials.db[:password] %> 29 socket: <%= Rails.application.credentials.db[:socket] %> 30

yml

1db: 2 database: ec_site 3 username: root 4 password: xxxxxx 5 socket: /var/lib/mysql/mysql.sock

ちなみにsqliteにもデータベースはありませんでした。

command

1[ec2-user@ip-10-0-0-235 ec_site]$ sqlite3 2SQLite version 3.7.17 2013-05-20 00:56:22 3Enter ".help" for instructions 4Enter SQL statements terminated with a ";" 5sqlite> .tables 6sqlite>

サーバーは一台しか作ってないはずです

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

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

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

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

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

yu_1985

2021/09/02 05:47 編集

端折らずにproduction以外の設定も貼ってください。 adapterをmysql2にしてないのでは?
hase744

2021/09/02 08:24

migrationなどは全てRAILS_ENV=productionにしたのですがこのdefaultのadapterの設定も変えないといけないんですか?
yu_1985

2021/09/02 08:34

それは書き方次第です。 回答の方に書きます。
hase744

2021/09/02 08:47

できました! ありがとうございます!!
guest

回答3

0

ベストアンサー

adapterがsqlite3になっているのでまずMySQLに接続していません。
defaultsqlite3にするのはまあいいとして、productionでadapterを指定せずそのままdefaultの値を引き継いでいるのでproductionでもsqlite3で接続していると思われます。
ちゃんとMySQLに接続するように設定してください。

yaml

1 <<: *default

とは、defaultの設定を継承するという意味です。

今の書き方だとどの環境でもdafaultを引き継いだ上でadapterを設定していないのでdefaultの設定がそのまま適用されています。

必要なのはおそらく下記でしょう。

  • mysql2のgemをインストールする

productionだけでいいならGemfileのproductionのところに、全体で使いたいなら環境が指定されていないところにgem 'mysql2'と追記してbundle installしてください。なんかエラーが出たらメッセージにしたがって対処してください。

  • database.ymlでmysql2を使用するように設定する

全体の設定を変えたいならdefaultのadapterをmysql2に変更、各環境ごとに設定したい(今回だとproductionのみ?)ならその環境にadapter: mysql2を追記してください。

参考になりそうなサイトを貼ろうかと思いましたが、個人レベルでやってみた程度のノイズがいっぱい出てきたので割愛します。

ちなみに、sqlite3コマンドで中身が見つからないのはおそらく参照しているファイルが違うからでしょう。

投稿2021/09/02 08:44

yu_1985

総合スコア7588

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

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

hase744

2021/09/02 08:55

その通りでした! あありがとうございます!!
hase744

2021/09/02 08:57

ただベストアンサーにしようとしたんですが、間違って先に自己解決方法書いてしまいましたm(__)m 自己解決方法記載したら他の人の回答をベストアンサーにできなかったんですね 知りませんでした
yu_1985

2021/09/02 09:02

一応、「未解決に戻す」というボタンがあるので確認してみてください。
hase744

2021/09/02 10:36

できました!
guest

0

config/database.ymlの設定を

yml

1default: &default 2 adapter: mysql2 3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 4 timeout: 5000 5 encoding: utf8mb4 6 charset: utf8mb4

をにする
Gemfileに

Gemfile

1gem 'mysql2'

を追加

command

1[ec2-user@ip-10-0-0-235 ec_site]$ bundle install

を実行すればできました

投稿2021/09/02 08:46

hase744

総合スコア57

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

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

0

Railsサイドのデータベース設定はどのようにしていますでしょうか。

「SQLiteを使うようになっていた」、あるいは「RDSなど別サーバのデータベースを使うようになっていた」というように、mysqlで接続したのと違うデータベースを使っている可能性があります。

投稿2021/09/02 01:30

maisumakun

総合スコア146018

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

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

hase744

2021/09/02 03:27

回答ありがとうございます データベースの設定について追記しました 他にどこの設定を見ればDBを確認できますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問