Skip to content
Prev 395227 / 398502 Next

Confirming MySQL Alive

? Sat, 7 Oct 2023 11:09:25 -0400
"Stephen H. Dawson, DSL via R-help" <r-help at r-project.org> ?????:
sudo is giving you a hint here. Normally it requires an interactive
terminal (that it can set up to disable character echo), but if you
give it the -S flag, it will be happy to read the password from stdin.
Wrap (a copy of) the connection code in try() or tryCatch() and see if
it fails.

If the MySQL DBI driver doesn't have a timeout option and can hang
indefinitely, you can try R.utils::withTimeout (implemented using
setTimeLimit(), so requires the DBI code to be interruptible / check
for interrupts). Alternatively, on a GNU/Linux box there's the timeout
utility (see `man 1 timeout`) that you could use together with the
`mysql` command-line client to try to establish the connection. Failing
everything else, there's socketConnection() to check whether anything
is listening on a given address and TCP port (but not for a UNIX domain
socket you would normally use to connect to the local server).

Beware of the time-of-check to time-of-use problem: a particularly
unlucky program could see a working MySQL server and then have it fail
later when it actually tries to work with it.