在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock

一、前言

今天尝试下在rails中将sqlite3数据库换成mysql数据库,遇到了报错,以下是报错详情和解决过程

二、报错记录和解决过程

1.创建新的项目blog2

终端执行:
rails new blog2 --skip-bundle -d mysql
这个指令的意思是跳过自动安装bundle,并改用mysql数据库

2.新建blog的model

终端执行:
rails g modle blog
在新生成的迁移文件中加入代码:

def change
    create_table :blogs do |t|
  +  t.string :title
  +  t.text :description
      t.timestamps
    end

3.运行迁移

终端执行:
rails db:migrate
这时候就出现了报错,如下图:

Snip20180202_16.png

由于没有遇到过这种错误,因此我就去谷歌寻找解决方案

4.google搜索

将"Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock'"这个错误提示进行google搜索,筛选了两个方案:
(1)方案1:使用mysql.server start重启mysql服务
终端执行:
mysql.server start
再次运行:
rails db:migrate
仍然出现相同的报错

(2)方案2:将database.yml中的host: localhost改成host: 127.0.0.1
这里在修改database.yml文件时,没有对齐,导致了报错:

Snip20180202_14.png

正确缩进后,再次执行:
rails db:migrate
产生了新的报错:
Snip20180202_15.png

提示:Mysql2::Error: Unknown database 'blog2_development'

5.向前辈请教

给出的解决方案是,先执行:
rails db:create
目的是为了产生相应的数据库
于是,我将database.yml文件内容还原成初始状态,即使用原来的host: localhost
然后执行:
rails db:create
rails db:migrate
果然顺利解决了问题,如图:

Snip20180202_18.png

三、结论

在使用mysql时,先要运行rails db:create创建相应的数据库,然后再rails db:migrate,否则由于没有数据库的存在,再怎么执行迁移命令也会报错的。

四、参考资料:

  1. Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock'

2.rake db:migrate errors out referencing /tmp/mysql.sock

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容