остановить запуск базы данных - PullRequest
0 голосов
/ 25 ноября 2011

Я занимаюсь разработкой приложения Rails v2.3.и используя MySQL v5.1.

мне нужно остановить и запустить базу данных mysql в одной из моих граблей , но я незнаете, как реализовать эту вещь, кто-нибудь может мне помочь?

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

Кстати, я занимаюсь разработкой на Ubuntu машине.

---------------------- Обновить ----------------------------

Я пытался exec "/etc/init.d/mysql stop", я получил следующее сообщение об ошибке:

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 также в командной строке, та же ошибка возникает,

Следуя инструкциям сообщения об ошибке, я попытался 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 -------------------------

Я понимаю, что, хотя вышеприведенное сообщение об ошибке показывает, sudo /etc/init.d/mysql stop на самом деле сделал свою работу .MySQL останавливается этой командой, в то время как сообщение поднимается.

Ответы [ 3 ]

0 голосов
/ 25 ноября 2011

Возможно что-то вроде следующего?

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 голосов
/ 25 ноября 2011

Я бы предпочел использовать систему ("sudo /etc/init.d/mysqld stop"), чтобы вы могли быть уверены, что база данных остановилась.system () ожидает выполнения команды, пока exec запускает фоновый поток.

@ update вам может понадобиться «sudo service mysql stop», если вы используете Ubuntu lucid или новее

0 голосов
/ 25 ноября 2011

вы можете выполнить команду оболочки в ruby, используя метод exec, как показано ниже

exec "/etc/rc.d/init.d/mysqld start"  #start mySql
exec "/etc/rc.d/init.d/mysqld stop"  #stop mySql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...