업데이트 : 실제로 자체적으로 mySQL 기반 응용 프로그램을 사용하는 경우에도 여전히 소켓 오류가 발생합니다. -레일에서 소켓을 통해 액세스 할 때 왜 내 레일이 깨지나요?
Mysql2 :: 오류 : 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다 '/ opt/local/var/run/mysql5/mysqld.sock '(2)
그래서 내 mysql이 엉망이되어야하지만 어떻게 수정해야할지 모르겠다. 나는 mysql을 통해 완전히 괜찮아 질 수 있으며, mysql 프롬프트에서 테이블을 선택하고 사용할 수있다.
하지만 레일 앱이나 레일 콘솔 나는 단지 작동하지 않습니다.
mysql과 postgres 데이터베이스에 모두 액세스하려하지만 mysql에 액세스하려고하면 postgres 정보가 표시됩니다! 참고 : 'to'postgres로 이동하려고하며 '마스터'(계산 된 경우)와 mysql을 이전 데이터의 원본으로 간주합니다 (읽기 전용).
특히, 나는 각 데이터베이스에 users 테이블이 있습니다. 나는 내 database.yml을 파일에 다음 한 :
common: &common
adapter: postgresql
encoding: unicode
host: localhost
encoding: UTF8
username: my_user_name
development:
<<: *common
database: newapp_development
pool: 5
mysql_development:
adapter: mysql
encoding: utf8
username: my_user_name
database: oldapp_development
나는 포스트 그레스의 사용자 테이블과 사용자 모델을 가지고 :
class User < ActiveRecord::Base
end
내가 MySQL의에서 사용자 테이블과 사용자 모델을 가지고 그 나는 models/Mysql 서브 디렉토리에 배치했다. 아직 user.rb라고하지만, 그 내용은 다음과 같습니다 그러나
class Mysql::User < ActiveRecord::Base
establish_connection "mysql_development"
end
내가 콘솔로 가서 MySQL의 작업을 수행 할 때 :: User.all 내가 얻을 :
`[1] pry(main)> Mysql::User.all
(pry):1: warning: toplevel constant User referenced by Mysql::User
User Load (2.6ms) SELECT "users".* FROM "users"`
하지만 ... 반환 된 데이터는 postgres NOT mysql에서 가져온 것입니다. 다른 사용자 테이블의 열 이름이 완전히 다르다는 것과 내가 예상했던 464 개 대신 5 개의 레코드 만 있다는 것을 알 수 있습니다.
나는 그것이 가능해야하지만 나는 네임 스페이스가 잘못되었거나 무언가를 가지고 있다고 확신하지만 지금까지 시도한 모든 조합은 지금까지 효과가 없다.
나는 'Oldapp'와 OldApp :: MysqlUser에 모델 이름에 directorty 이름을 변경하려하지만 난 그렇게하고 Oldapp을하려고 할 때 :: MysqlUser.all을 나는Mysql::Error: Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)
from /Users/michaeldurrant/.rvm/gems/[email protected]_Abroad101/gems/activerecord-3.1.3/lib/active_record/connection_adapters/mysql_adapter.rb:931:in `real_connect'
매우 분명 할 것 같습니다. 그러나 database.yml 파일을 변경 한 후 서버를 다시 시작 했습니까? –
경고 때문에 ... Mysql :: User == User. Mysql 디렉토리와 네임 스페이스를 다른 이름으로 바꿉니다. – Fivell
Phyo 님, 좋은 제안입니다. 내가하고있는 일은 콘솔을 사용하고 다시로드하는 것입니다! 환경을 다시로드 할 때마다 나는 그것이 무엇을 말하며 환경을 새로 고침하여 변경 사항을 적용해야한다고 믿는다. –