2011-11-25 3 views
0

레일즈 v2.3 앱을 개발 중입니다. MySQL v5.1을 사용합니다.stop start database

내가 정지레이크 작업 중 하나 시작 MySQL 데이터베이스에 필요하지만, 나는이 일을 구현하는 방법을 잘 모르겠습니다, 어떤 사람은 나를 도울 수 있을까? 그런데

namespace :db do 
    task :some_db_task => :environment do 
     #shut down mysql 
     ... 
     #start mysql 
    end 
end 

, 나는 우분투 머신에 개발입니다.

----------------------- 업데이트 --------------------- 을 준수함으로써

Rather than invoking init scripts through /etc/init.d, use the service(8) 
utility, e.g. service mysql stop 

Since the script you are attempting to invoke has been converted to an 
Upstart job, you may also use the stop(8) utility, e.g. stop mysql 
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.78" (uid=1000 pid=6331 comm="stop) interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")) 

나는 또한 명령 행, 동일한 오류 인상에 /etc/init.d/mysql stop을 시도,

: -------

내가 exec "/etc/init.d/mysql stop"을 시도, 나는 다음과 같은 오류 메시지를 받았습니다 오류 메시지의 지시에 따라 service mysql stop을 시도했지만 새로운 오류 메시지가 나타납니다 :

stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.79" (uid=1000 pid=6343 comm="stop) interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")) 

왜 나는 mysql을 멈출 수 없습니까 ??

--------------- 업데이트 2 -------------------------

위의 오류 메시지가 표시 되더라도 실제로 이 일을 수행했음을 알게되었습니다.. MySQL 은이 명령으로을 중지하고 동시에 메시지를 발생시킵니다.

답변

0

데이터베이스 ("sudo /etc/init.d/mysqld stop")를 사용하면 데이터베이스가 중지되었음을 확인할 수 있습니다. system()은 exec가 백그라운드 스레드를 시작하는 동안 명령이 실행되기를 기다립니다. 당신이

+1

내 업데이트를 확인해주세요. 이제는 문제가 MySQL을 멈출 수없는 것 같습니다. – Mellon

+0

내 업데이트보기 ^^ – Michael

+0

"sudo service mysql stop"을 실행하기 위해 업데이트를 시도했지만 "중지 : 알 수없는 인스턴스 :"라는 오류 메시지가 나타납니다. " – Mellon

-1

당신은 다음과 같은

exec "/etc/rc.d/init.d/mysqld start" #start mySql 
exec "/etc/rc.d/init.d/mysqld stop" #stop mySql 
+0

안녕하세요 우분투 명쾌한 이상 사용하는 경우

내 업데이 트를 확인하시기 바랍니다 내가 왜, mysql을 중지 할 수없는 것 같습니다 당신이 "sudo는 서비스 mysql을 정지"를해야 할 수도 있습니다 @update? – Mellon

+0

sudo가 없으면 사용자가 루트 사용자로 로그인하지 않은 경우 작동하지 않습니다 – Mellon

+0

완전히 명령에 따라 달라 지므로 쉘 명령을 실행하기 위해 exce 메서드를 사용하는 것이 좋습니다. –

0

아마도 뭔가 아래로 간부 인 방법을 사용하여 루비에서 쉘 명령을 실행할 수 있습니까?

namespace :db do 
    task :start do 
    exec "sudo /etc/init.d/mysqld start" 
    end 

    task :stop do 
    exec "sudo /etc/init.d/mysqld stop" 
    end 
end 
+0

안녕하세요, 내 업데이 트를 확인하시기 바랍니다, 나는 MySQL을 막을 수없는 것, 왜? – Mellon