【问题标题】:Mysql2 Error on Rails MigrationRails 迁移上的 Mysql2 错误
【发布时间】:2011-05-18 20:55:43
【问题描述】:

在rake db:migrate 我得到错误:

Mysql2::Error: Can't read dir of './site_development/'(错误号: 13): 显示表格

已安装恶作剧的当前版本:

来自 MySQL 安装包:mysql Ver 14.14 Distrib 5.5.12,用于 osx10.6 (i386),使用 readline 5.1

来自 RVM:ruby 1.9.2p180(2011-02-18 修订版 30909)[x86_64-darwin10.7.0]; 导轨 3.0.7; mysql2 0.2.7

我知道某些权限需要更新,但我不太确定哪些权限。

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-3 rubygems


    【解决方案1】:

    您的数据库是否命名为site_development?如果是这样,这可能会有所帮助:

    确定你的mysql数据目录是什么。对我来说,它是/usr/local/mysql/data。 sudo ls -l那个坏小子。我打赌你会找到一个名为site_development 的目录,它归root(或_mysql 用户以外的某个用户)所有。对我来说,所有 mysql 数据目录都归 _mysql:wheel 所有。您是否有另一个工作正常的数据库?查看data 目录中该表的所有权,并确保site_development 匹配。

    我怀疑如果您从命令行运行mysql,并尝试从该数据库的表中选择某些内容,您会看到类似的错误。如果没有,请告诉我们您的数据库名称是什么,您的 mysql 数据目录的权限是什么。

    如果您不确定您的 mysql 数据目录在哪里,请尝试输入 which mysql。这应该会告诉你 mysql 二进制文件在哪里,它应该在 PATH_PREFIX/mysql/bin/mysql 导演中。数据目录应该是bin 的兄弟,所以它应该是PATH_PREFIX/mysql/data。

    【讨论】:

    • 数据库是网站开发的。我可以在您上面提到的同一个 mysql 数据目录中看到它。具有默认权限的两个用户是 $USER 和 wheel。我用 mysql 创建的所有数据库的权限看起来都一样。 Site_development 是第一个属于 rails 测试项目的数据库。
    • 有趣。那么,如果您运行mysql -u RAILS_DB_USER -p site_development 并输入您的rails 用户的密码(就像它在database.yml 中列出的一样),您可以从该数据库中的表中进行选择吗?
    • 是的。 Sequel Pro 也在工作。但显然,“数据库不存在”,即使我可以在“SHOW DATABASES;”中看到它。
    • 也许site_development 有适当的权限,但它的内容却没有?试试sudo ls -l /MYSQL/DATA/PATH/site_development。确保其中的每个文件都具有相同的权限。如果没有你可以sudo chown -R $USER:wheel MYSQL/DATA/PATH/site_development
    【解决方案2】:

    对于 Mac OS,运行

    sudo chown -R mysql:mysql /usr/local/mysql*
    

    用户mysql应该对mysql数据目录有写权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2015-04-04
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多