在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
这时候就出现了报错,如下图:

在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock_第1张图片
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文件时,没有对齐,导致了报错:

在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock_第2张图片
Snip20180202_14.png

正确缩进后,再次执行:
rails db:migrate
产生了新的报错:
在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock_第3张图片
Snip20180202_15.png

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

5.向前辈请教

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

在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock_第4张图片
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

你可能感兴趣的:(在rails中使用mysql遇到的坑-- Can't connect to local MySQL server through socket '/tmp/mysql.sock)