我正在学习使用mysql作为rails应用程序,我终于能够启动并运行我的应用程序(现在有点)。我设法用homebrew安装mysql,然后填充我的database.yml文件并运行rake db:create。现在我可以运行我的rails服务器并导航到我的应用程序的主页(之前我没有数据库错误)。
那么,既然似乎创建了数据库,它位于何处?我很想知道,因为我之前使用的是sqlite3,并且能够在app / db / development.db中看到我的开发数据库文件
我只想更详细地了解mysql如何在rails上下文中工作。
答案 0 :(得分:6)
当使用MySQL或其他基于服务器的完整RDBMS系统而不是SQLite时,您将不会使用您的应用程序创建数据库文件。相反,数据库存储在服务器运行的MySQL实例中。
从技术上讲,存在与MySQL数据目录中存储的表相关联的文件,但它们的位置与您的应用程序无关,实际上甚至可能不被您的常规shell用户帐户读取。通过使用客户端/服务器RDBMS而不是像SQLite这样的基于文件的RDBMS,您可以有效地将与数据库存储相关的所有职责(*)委派给RDBMS,从而将数据存储与应用程序分离。
如果使用客户端连接到主机的MySQL服务器,您将看到列出的rails应用程序数据库
# Connect from the command line
$ mysql -usomeusername -p
# Execute MySQL commands
mysql> SHOW DATABASES;
将输出如下内容:
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo |
| demo_development |
| demo_test |
| mysql |
| test |
+--------------------+
7 rows in set (0.13 sec)
(*)注意 - 我指的是数据模型存储,而不是您的应用程序可能使用的任何其他基于文件的存储,它由Rails和您的应用程序代码管理。
答案 1 :(得分:1)
如果您已成功创建数据库,那么您可能有这样的设置。在database.yml中:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: site_db
pool: 5
username: root
password: secret
socket: /var/run/mysqld/mysqld.sock
您可以使用phpmyadmin或终端
查看您的数据库(sitedb)答案 2 :(得分:0)
确保使用-u命令连接到mysql,例如root,然后它将列出数据库。 (提供database.yml文件中的内容)。我只是连接没有-u并没有看到任何东西。很可能与我的本地用户连接,我没有权限查看数据库!糟糕!
答案 3 :(得分:0)
根据我最近的经验,当您输入mysql凭据时,我认为您拼错了命令选项。就我而言,我输入了以下内容:
root@myserver# mysql -u root -opabc123
其中-o
和-p
是命令选项,其余为:abc123是密码。在这里,我不小心输入了-o
命令选项,这是导致数据库消失的原因。 (请参阅-o
-one-database。)
不要通过-o
并尝试。
希望这会有所帮助