今天闲来无事,在ubuntu上源码安装了mysql 5.1.57,安装过程在这里不详细叙述,在安装完后,把mysql的配置文件my.cnf放到了/etc下,即/etc/my.cnf在里面做了mysql的socket指向(/usr/local/tmp/mysql.sock)然后启动mysql,一切正常。ok,到此为止我以为万事大吉了,然后我进入到项目的根目录,rails c 进入控制台,执行一个简单的查询,问题出现了: NoMethodError: undefined method `init' for Mysql:Class不知道啥原因,一番google后,发现有人说需要安装mysql驱动,ok,于是 gem install mysql ,结果在执行安装的过程中又出现了错误:
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
没办法,继续google,原来是缺少了依赖包,ok,继续安装相关的依赖包:
sudo apt-get install libmysqlclient-dev
之后,继续 gem install mysql,ok,这次没有发现问题了,然后进入到项目的跟目录,rails c 进入控制台,执行简单的查询,完了,又报错了:Can't connect to local MySQL server through socket '//var/run/mysqld/mysqld.sock' (2),一看,很明显,在链接的时候mysql找不到socket文件,咦,但是问题来了啊,我刚刚已经把mysql配置好了啊,而且我可以进入到mysql里面去执行查询了啊,怎么现在忽然报这个socket错误呢。好吧,我来看看,我刚才的这一串操作后,给我的mysql造成了什么影响,我进入到/etc,然后进入到我的my.cnf文件,发现里面没有任何改动的迹象,奇怪了,但是当我在/etc下边ll mysql的时候发现了一个问题,在这个/etc目录下多了一个目录mysql,然后我进入到这个目录,发现里面也有个my.cnf,里面的socket指向刚好是上边报的找不到socket的路径,这就是说,在用程序链接mysql的时候,mysql读取了/etc下的my.cnf文件了,而并没有读取我的/etc/my.cnf文件,这个mysql文件目录是怎么来的呢,应该是我在前边安装libmysqlclient-dev的时候生成的。ok,问题的原因找到了,那么对于我现在遇到的问题怎么解决呢?好吧,我进入到了项目的database.yml文件,在每个环境的配置后边都加上了socket指向:socket: /usr/local/mysql/tmp/mysql.sock,ok,我再进入到项目跟目录,执行简单的查询,问题解决了,这就是说,我可以在项目里面来指定该项目用到的mysl的socket的位置。
问题是解决了,但是我们得想想啊,我不能在每个项目里面都配置这个socket吧,最好是在/etc下的my.cnf里面配置一遍,然后让mysql自己去找就可以了,我们就不用在每个项目地下都配置这个东东了,可是问题在于,现在的/etc下有两个my.cnf,到底该咋办?好吧,我们来看看,这两个文件是不是可以删除掉一个
分享到:
相关推荐
如何知道你是否击中了这个你会知道你是否点击了这个,因为你会收到一条错误消息,比如 NoMethodError: undefined method `join' for #或者也许是这样的: Unexpected error while processing request: undefined ...
nokogiri_bang_finders 这颗宝石说“Nokogiri,如果你找... content # NoMethodError: undefined method `content' for nil:nilclass # with nokogiri_bang_finders doc . at! ( 'robot' ) . content # Nokogiri::XML
一元操作大家都知道,就是表达式的操作符只有一个输入值。这个在C和Java中都很常见。今天我们要探讨一下Ruby中的一元操作符重载。 一元操作符有:+ – * !...NoMethodError: undefined method `-@’ for “Hello”:
简单电子邮件异常通知程序 用于通知的电子邮件通知程序,不依赖于 ActionMailer,可以在 Rails 之外使用,即与 Grape ... 这让 ActiveRecord 开始认为有一个 Rails 应用程序并引发NoMethodError: undefined method '
世界风java源码创客编码训练营组合 如果您正在阅读本文档,您会想...NoMethodError: undefined method `prompt' for Echo:Class 这里的错误消息告诉我们创建一个名为“prompt”的方法。 ----- 下面是我将如何向编码新手
反私 使每个新声明的protected或private方法公开。...OldClass.is_private # => NoMethodError: method `is_private' ... 执照 版权所有 2015 罗伯霍华德 根据 Apache 许可,版本 2.0(“许可”)获得许
### Ruby元编程之method_missing的一个使用细节 #### 引言 在Ruby语言中,元编程是一种非常强大的功能,它允许程序在运行时修改自身的行为。其中`method_missing`方法是元编程的重要组成部分之一,用于处理未知的...
当你尝试调用一个不存在的方法时,Ruby会默认抛出`NoMethodError`异常,但如果你定义了`method_missing`方法,它就会在找不到相应方法时被调用,从而提供了一种动态响应未知方法的能力。 `method_missing`的基本...
c.private_method # 报错,因为直接调用私有方法会抛出NoMethodError ``` 在这个例子中,我们首先定义了一个公共方法`public_method`和一个私有方法`private_method`。然后,使用`private :private_method`语句将`...
undefined method `invoke_with_build_args' for nil:NilClass ``` 这个错误表明在尝试加载gem安装命令时,系统找不到`zlib`库。`zlib`是一个压缩库,对于许多编程语言,包括Ruby,都是必需的,因为它被用作数据...
在Ruby编程语言中,单件方法(Singleton Method)和单件类(Singleton Class)是两个非常重要的概念。这些特性为Ruby提供了强大的灵活性,允许开发者针对特定的对象定义唯一的方法。下面将详细介绍这两者的工作原理...
一个迭代开发中的网站难免存在bug,出bug的时候客户体验就很不好了,为解决此问题,可以在class error产生的时候,触发跳转到统一提示页面,并给开发人员发邮件报错误信息,提高测试能力和用户体验。以下是核心方法...
- **元编程**:Ruby提供了`eval`、`define_method`等方法,允许在运行时修改或创建类和方法,增强了灵活性。 - **异常处理**:通过`begin..rescue..end`结构处理程序中的异常情况。 3. **Ruby-2.5系列的特性**:...
1. **NoMethodError**:这是Rails中最常见的错误之一,通常表示尝试调用一个不存在的方法。检查代码中是否存在拼写错误或未定义的方法,确保引用的实例变量正确,并且在适当的地方定义或引入了所需的方法。 2. **...
9. **元编程增强**:Ruby的元编程能力进一步提升,如`Module#define_method`和`Module#module_function`等方法的改进,使得在运行时修改类和模块的行为更加灵活。 10. **错误处理**:错误处理机制得到了改进,新的...
- 对于新手用户,在遇到诸如 `NoMethodError` 错误时,确保正确地导入所需的类或模块。例如,在使用 FireWatir 时,可以通过以下命令启动浏览器: ```ruby require 'firewatir' browser = Watir::Browser.new ``...
然而,通过`undef_method`方法,可以在类中显式地删除一个已定义的方法,这在调试和运行时代码修改中非常有用。 #### 七、继承与初始化 Ruby支持传统的单继承模型。在子类中重写父类的`initialize`方法时,需要...
class Test2 < Test xss=removed> 这里加上self就不能调用,private method `test_print' called for # (NoMethodError) test_print #=> 不加self就能调用 end end Test2.new.test_print2 为什么不加self的话
4. **Safe Navigation Operator (安全导航运算符)**:`&.`用于调用可能为`nil`的对象的方法,如果对象为`nil`,则直接返回`nil`,避免了`NoMethodError`。 5. **Symbol#to_proc (符号到Proc的转换)**:现在,符号...