mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-12 00:26:13 +01:00
467308dd12
Summary: A bunch of the .sql patch files don't explicitly specify the table engine, but we should always use InnoDB with the exception of one table which needs MyISAM for FULLTEXT. MySQL doesn't no-op an ALTER TABLE statment that changes the engine back to itself and converting large tables can be time consuming, so convert only the required tables. Test Plan: Ran on secure.phabricator.com and my local box, it fixed all the issues in about 3 seconds on secure.phabricator.com and <<1 second on my local. Reviewed By: codeblock Reviewers: codeblock, tuomaspelkonen, jungejason, aran CC: aran, epriestley, codeblock Differential Revision: 641
47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Copyright 2011 Facebook, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
$conn = $schema_conn;
|
|
|
|
$tables = queryfx_all(
|
|
$conn,
|
|
"SELECT TABLE_SCHEMA db, TABLE_NAME tbl
|
|
FROM information_schema.TABLES s
|
|
WHERE s.TABLE_SCHEMA LIKE %>
|
|
AND s.TABLE_NAME != 'search_documentfield'
|
|
AND s.ENGINE != 'InnoDB'",
|
|
'phabricator_');
|
|
|
|
if (!$tables) {
|
|
return;
|
|
}
|
|
|
|
echo "There are ".count($tables)." tables using the MyISAM engine. These will ".
|
|
"now be converted to InnoDB. This process may take a few minutes, please ".
|
|
"be patient.\n";
|
|
|
|
foreach ($tables as $table) {
|
|
$name = $table['db'].'.'.$table['tbl'];
|
|
echo "Converting {$name}...\n";
|
|
queryfx(
|
|
$conn,
|
|
"ALTER TABLE %T.%T ENGINE=InnoDB",
|
|
$table['db'],
|
|
$table['tbl']);
|
|
}
|
|
echo "Done!\n";
|