mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-25 00:02:41 +01:00
Improve bin/storage upgrade
behavior when run out-of-order
Summary: Fixes T5770. This error occurs if you run `bin/storage upgrade` before you set up MySQL credentials. This isn't what the setup guide says to do, but it's an easy mistake to make and should be a permitted install path since there's no reason you can't do things in this order. Specifically, we use a mixture of "standard" (configured) and "administrative" (`--user` and `--password`) credentials, and if the standard ones are bogus bad things happen. We use the standard credentials to make some initialization order stuff easier, and because there's no `--host` flag and adding one would be silly, and because we only need administrative credentials to issue ALTER / CREATE statements. Test Plan: Ran with bad standard credentials; ran with bad administrative credentials. Ran with good credentials. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T5770 Differential Revision: https://secure.phabricator.com/D10199
This commit is contained in:
parent
cda397da9c
commit
237b1d769b
1 changed files with 52 additions and 4 deletions
|
@ -70,6 +70,46 @@ try {
|
||||||
exit(77);
|
exit(77);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// First, test that the Phabricator configuration is set up correctly. After
|
||||||
|
// we know this works we'll test any administrative credentials specifically.
|
||||||
|
|
||||||
|
$test_api = new PhabricatorStorageManagementAPI();
|
||||||
|
$test_api->setUser($default_user);
|
||||||
|
$test_api->setHost($default_host);
|
||||||
|
$test_api->setPort($default_port);
|
||||||
|
$test_api->setPassword($conf->getPassword());
|
||||||
|
$test_api->setNamespace($args->getArg('namespace'));
|
||||||
|
|
||||||
|
try {
|
||||||
|
queryfx(
|
||||||
|
$test_api->getConn(null),
|
||||||
|
'SELECT 1');
|
||||||
|
} catch (AphrontQueryException $ex) {
|
||||||
|
$message = phutil_console_format(
|
||||||
|
pht(
|
||||||
|
"**MySQL Credentials Not Configured**\n\n".
|
||||||
|
"Unable to connect to MySQL using the configured credentials. ".
|
||||||
|
"You must configure standard credentials before you can upgrade ".
|
||||||
|
"storage. Run these commands to set up credentials:\n".
|
||||||
|
"\n".
|
||||||
|
" phabricator/ $ ./bin/config set mysql.host __host__\n".
|
||||||
|
" phabricator/ $ ./bin/config set mysql.user __username__\n".
|
||||||
|
" phabricator/ $ ./bin/config set mysql.pass __password__\n".
|
||||||
|
"\n".
|
||||||
|
"These standard credentials are separate from any administrative ".
|
||||||
|
"credentials provided to this command with __--user__ or ".
|
||||||
|
"__--password__, and must be configured correctly before you can ".
|
||||||
|
"proceed.\n".
|
||||||
|
"\n".
|
||||||
|
"**Raw MySQL Error**: %s\n",
|
||||||
|
$ex->getMessage()));
|
||||||
|
|
||||||
|
echo phutil_console_wrap($message);
|
||||||
|
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($args->getArg('password') === null) {
|
if ($args->getArg('password') === null) {
|
||||||
// This is already a PhutilOpaqueEnvelope.
|
// This is already a PhutilOpaqueEnvelope.
|
||||||
$password = $conf->getPassword();
|
$password = $conf->getPassword();
|
||||||
|
@ -92,10 +132,18 @@ try {
|
||||||
$api->getConn(null),
|
$api->getConn(null),
|
||||||
'SELECT 1');
|
'SELECT 1');
|
||||||
} catch (AphrontQueryException $ex) {
|
} catch (AphrontQueryException $ex) {
|
||||||
echo phutil_console_format(
|
$message = phutil_console_format(
|
||||||
"**%s**: %s\n",
|
pht(
|
||||||
'Unable To Connect',
|
"**Bad Administrative Credentials**\n\n".
|
||||||
$ex->getMessage());
|
"Unable to connnect to MySQL using the administrative credentials ".
|
||||||
|
"provided with the __--user__ and __--password__ flags. Check that ".
|
||||||
|
"you have entered them correctly.\n".
|
||||||
|
"\n".
|
||||||
|
"**Raw MySQL Error**: %s\n",
|
||||||
|
$ex->getMessage()));
|
||||||
|
|
||||||
|
echo phutil_console_wrap($message);
|
||||||
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue