Fix various MySQL version issues with new charset stuff
Summary: Ref T1191. Notable stuff: - Adds `--disable-utf8mb4` to `bin/storage` to make it easier to test what things will (approximately) do on old MySQL. This isn't 100% perfect but should catch all the major stuff. It basically makes us pretend the server is an old server. - Require utf8mb4 to dump a quickstart. - Fix some issues with quickstart generation, notably special casing the FULLTEXT handling. - Add an `--unsafe` flag to `bin/storage adjust` to let it truncate data to fix schemata. - Fix some old patches which don't work if the default table charset is utf8mb4. Test Plan: - Dumped a quickstart. - Loaded the quickstart with utf8mb4. - Loaded the quickstart with `--disable-utf8mb4` (verified that we get binary columns, etc). - Adjusted schema with `--disable-utf8mb4` (got a long adjustment with binary columns, some truncation stuff with weird edge case test data). - Adjusted schema with `--disable-utf8mb4 --unsafe` (got truncations and clean adjust). - Adjusted schema back without `--disable-utf8mb4` (got a long adjustment with utf8mb4 columns, some invalid data on truncated utf8). - Adjusted schema without `--disable-utf8mb4`, but with `--unsafe` (got truncations on the invalid data). Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T1191 Differential Revision: https://secure.phabricator.com/D10757
This commit is contained in:
@@ -64,6 +64,13 @@ try {
|
||||
'help' => 'Do not actually change anything, just show what would be '.
|
||||
'changed.',
|
||||
),
|
||||
array(
|
||||
'name' => 'disable-utf8mb4',
|
||||
'help' => pht(
|
||||
'Disable utf8mb4, even if the database supports it. This is an '.
|
||||
'advanced feature used for testing changes to Phabricator; you '.
|
||||
'should not normally use this flag.'),
|
||||
)
|
||||
));
|
||||
} catch (PhutilArgumentUsageException $ex) {
|
||||
$args->printUsageException($ex);
|
||||
@@ -126,6 +133,7 @@ $api->setHost($default_host);
|
||||
$api->setPort($default_port);
|
||||
$api->setPassword($password);
|
||||
$api->setNamespace($args->getArg('namespace'));
|
||||
$api->setDisableUTF8MB4($args->getArg('disable-utf8mb4'));
|
||||
|
||||
try {
|
||||
queryfx(
|
||||
|
||||
Reference in New Issue
Block a user