新手问题 rails 中的 database.yml 中能设置 mysql 的端口号吗?

wawayu · July 08, 2017 · Last by wawayu replied at July 08, 2017 · 3209 hits

大神们,请问在 database.yml 中能设置端口号吗?我本机的端口号和另外一台电脑的端口号不一样,在自己电脑终端的命令加入对方的端口号后能连上,请问在 database.yml 怎么设置。谢谢啦😝

URI 加 端口 的文法是 host:port

所以,database.yml 里的 host: 127.0.0.1 可以试试加上 port 改成如 host: 127.0.0.1:3306

Reply to jasl

好滴😊,我试了加了一个 port 字段,这样:port: 13306,这样是运行没问题了,但是按你的这个写后,会报错,为啥

Reply to jasl

第一个图没问题,我搜了一下,没人说我就自己添加试试了,能连上。第二个图是是把端口号加在 host 后就这样了,为啥呢

端口是 13306?

Reply to wawayu

能不能这样做,跟 mysql 的驱动如何解析 host 有关,看样子不支持那样做

我其实本想直觉上说 port: 3306 就能解决了,但是我手头正好有个新的 Rails 项目,我发现使用 mysql 数据库 的 Rails 的新项目模板的 database.yml里并不包含 port 节,一般为了演示用会在文档里提到,然后默认注释掉,比如你看 PostgreSQL 的默认的 database.yml

但我没有在 mysql 的看到类似的章节,模板源码在此 https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml

如果你试过加 port 奏效,那其实可以说是 Rails 的疏漏了,你可以仿照 postgresql 的那个模板,为 mysql 的增加一个如何指定 port 的注释,骗一个 PR 来。

Reply to jasl

嗯嗯,好滴,会不会和版本有关呢,我 rails5.1.1,ruby2.4,我也搜了一下,网上没有说这方面的,也不知道以后会不会有影响。

Reply to wawayu

一般不会,Rails 也是使用的 mysql2 这个 gem

Reply to zouyu

嗯嗯😊是啊

You need to Sign in before reply, if you don't have an account, please Sign up first.