programing

Ruby on Rails 3 소켓 '/tmp/mysql'을 통해 로컬 MySQL 서버에 연결할 수 없습니다.OSX에서 '삭

newsource 2022. 9. 25. 00:27

Ruby on Rails 3 소켓 '/tmp/mysql'을 통해 로컬 MySQL 서버에 연결할 수 없습니다.OSX에서 '삭

표준 Rails3 환경, RVM 1.2.9, Rails 3.0.5, Ruby 1.9.2p180, MySQL2 Gem 0.2.7, mysql-5.5.10-osx10.6-x86_64를 사용하고 있습니다.

시 하는 오류rake db:migrate데이터베이스 작성은 다음과 같습니다.

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

설정/삭제yml에는

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx

내가 놓치고 있는 간단한 뭔가가 분명해

먼저 소켓 파일을 찾으려면:

mysqladmin variables | grep socket

이것은 나에게 다음과 같은 이점이 있다.

| socket                                            | /tmp/mysql.sock                                                                                                        |

다음 '하다', '어리다', '어리다'에 한 을 더하면 .config/database.yml:

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /tmp/mysql.sock

찾았다!

host: localhostconfig에서 "syslog/syslog.yml"로 합니다.host: 127.0.0.1로컬 소켓이 아닌 TCP/IP를 통해 레일이 연결되도록 합니다.

development:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx

mysql 서버가 실행되고 있지 않을 수 있습니다.서버의 기동 방법에 대해서는, 다음과 같습니다.이것은 mysql 다운로드와 함께 제공되는 README 파일에서 발췌한 것입니다.

설치 후 터미널 창에서 다음 명령을 실행하여 MySQL을 시작할 수 있습니다.이 작업을 수행하려면 관리자 권한이 있어야 합니다.

스타트업 항목을 설치한 경우 다음 명령을 사용합니다.

 shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)

스타트업 항목을 사용하지 않는 경우 다음 명령어시퀀스를 입력합니다.

 shell> cd /usr/local/mysql
 shell> sudo ./bin/mysqld_safe
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-Z)
 shell> bg
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)

이 문제를 해결하기 위한 옵션은 다음과 같습니다.

옵션 1: 호스트를 127.0.0.1로 변경

staging:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

옵션 2: 서버 MySql에 2개의 접속이 있는 것 같습니다.소켓 파일의 위치를 찾으려면 , 다음의 순서에 따릅니다.

mysqladmin variables | grep socket

나는 다음과 같이 말한다.

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!

또는

mysql --help 

이 에러는, PHP 애플리케이션용의 OS X Version 10.9.5 에 XAMPP 를 인스톨 하고 있기 때문에 발생합니다.여기서 기본 소켓 위치 중 하나를 선택합니다.

기본 레일 앱으로 선택:

socket: /tmp/mysql.sock

PHP 앱의 경우 XAMPP를 설치하고 소켓을 설정합니다.

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

OS X에서의 기타 소켓 위치

MAMPP의 경우:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

MySQL 패키지 설치의 경우:

socket: /tmp/mysql.sock

Mac OS X Server에 번들된 MySQL의 경우:

socket: /var/mysql/mysql.sock

Ubuntu의 경우:

socket: /var/run/mysqld/mysql.sock

옵션 3: 이러한 설정이 모두 동작하지 않는 경우는, 소켓의 위치를 떼어낼 수 있습니다.

staging:
  # socket: /var/run/mysqld/mysql.sock

이게 도움이 됐으면 좋겠어요.

MySQL 서버를 시작하면 "/tmp/mysql.sock"이 자동으로 생성됩니다.따라서 레일 서버를 시작하기 전에 이 작업을 수행해야 합니다.

은 OSX MAMP에 .MySQL 소켓은 MySQL에 있습니다./Applications/MAMP/tmp/mysql/mysql.sock나는 사용했다.locate mysql.sockMySQL my my my my my 。

나의 ★★★★★★★★★★★★★★★★★.config/database.yml★★★★

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /Applications/MAMP/tmp/mysql/mysql.sock

Mac OSX를 사용하는 경우

MySQL Unix 소켓의 기본 위치는 선택한 설치 유형에 따라 Mac OS X 및 Mac OS X 서버에서 다릅니다.

설치 유형별 Mac OS X에서의 MySQL Unix 소켓 위치

  • MySQL ----------------------/tmp/mysql.sock 패키지 설치

  • MySQL의 tarball -------------------------------------------------------------------------------------------------------------

  • Mac OS X Server에 번들된 MySQL ---------/var/mysql/mysql.sock

database.yml을 변경하기만 하면 됩니다.socket: /tmp/mysql.sock사용하고 있는 OS 및 설치 유형에 따라 적절한 위치를 가리키다

Mac OS X의 MySQL 소켓 기본 위치는 다음과 같습니다./var/mysql/mysql.sock.

나도 같은 문제를 겪었지만, 내가 해야 할 일에 대해 차근차근 설명해 주는 대답은 없었다.이 오류는 소켓 파일이 아직 생성되지 않았기 때문에 발생합니다.필요한 것은 다음과 같습니다.

  1. mysql 서버를 부팅하면/tmp/mysql.sock를 작성하여 실행합니다.mysql server start
  2. 작업이 완료되면 앱 디렉토리로 이동하여 편집 후config/database.yml파일 작성 및 추가/편집socket: /tmp/mysql.sock엔트리
  3. 달려.rake:dbmigrate다시 한 번 말하지만 모든 것이 잘 될 것이다

저는 생산 환경만 있는 것이 문제라는 것을 알았습니다.개발 환경이나 테스트 환경이 없습니다.

'RAILS_ENV=production'을 추가하여 다음 명령을 내림

bundle exec rake redmine:plugins:migrate RAILS_ENV=production

효과가 있었다

XAMPP를 통해 MYSQL을 실행하고 있는 경우:

  1. XAMPP mysql 컨피규레이션파일(OSX)을 엽니다.

    /어플리케이션/XAMPP/etc/my.cnf

  2. 소켓 경로를 복사합니다.

    소켓 = /어플리케이션/XAMPP/xamppfiles/var/mysql/mysql.sock

  3. 레일 프로젝트의 데이터베이스 구성 파일(myproject/config/database)을 엽니다.yml

  4. 개발 데이터베이스 구성에 소켓 구성을 추가합니다.

-->

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: difiuri_falcioni
  pool: 5
  username: root
  password:
  host: localhost
  socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
  1. 레일 서버 재시작

즐기세요 :)

다음과 같은 문제가 있습니다.소켓 '/var/run/mysqld/mysqld'를 통해 로컬 MySQL 서버에 연결할 수 없습니다.양말'

응답: $sudo service mysql 시작

mysqld 서비스가 정지되어 있기 때문에 같은 문제가 발생하고 있었습니다.

1:- 단말기에 접속하여 입력

sudo service mysqld restart

그러면 mysqld 서비스가 재시작되고 필요한 위치에 새 sock 파일이 생성됩니다.

Ubuntu 또는 기타 Linux에서 XAMPP 또는 LAMPP를 통해 MYSQL을 실행하는 경우 다음을 시도해 보십시오.

socket: /opt/lampp/var/mysql/mysql.sock

언급URL : https://stackoverflow.com/questions/5499035/ruby-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s