Jakub Vrána has uploaded a new change for review.
https://gerrit.wikimedia.org/r/62174
Change subject: Allow installing MySQLi
......................................................................
Allow installing MySQLi
Bug: 45288
Change-Id: I7334c4872f51ef38ac17c747e2ef4a8a0236623a
---
M includes/AutoLoader.php
M includes/db/Database.php
M includes/db/DatabaseMysql.php
M includes/installer/DatabaseInstaller.php
M includes/installer/Installer.i18n.php
M includes/installer/Installer.php
M includes/installer/MysqlInstaller.php
M includes/installer/MysqlUpdater.php
A includes/installer/MysqliInstaller.php
9 files changed, 105 insertions(+), 19 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/74/62174/1
diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php
index 921ce96..d73b2d6 100644
--- a/includes/AutoLoader.php
+++ b/includes/AutoLoader.php
@@ -625,6 +625,7 @@
'Installer' => 'includes/installer/Installer.php',
'LocalSettingsGenerator' =>
'includes/installer/LocalSettingsGenerator.php',
'MysqlInstaller' => 'includes/installer/MysqlInstaller.php',
+ 'MysqliInstaller' => 'includes/installer/MysqliInstaller.php',
'MysqlUpdater' => 'includes/installer/MysqlUpdater.php',
'OracleInstaller' => 'includes/installer/OracleInstaller.php',
'OracleUpdater' => 'includes/installer/OracleUpdater.php',
diff --git a/includes/db/Database.php b/includes/db/Database.php
index 00c0bd9..17ef093 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -665,6 +665,7 @@
function __construct( $server = false, $user = false, $password =
false, $dbName = false,
$flags = 0, $tablePrefix = 'get from global'
) {
+
global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
$this->mFlags = $flags;
diff --git a/includes/db/DatabaseMysql.php b/includes/db/DatabaseMysql.php
index 4ab0355..07efe32 100644
--- a/includes/db/DatabaseMysql.php
+++ b/includes/db/DatabaseMysql.php
@@ -276,6 +276,8 @@
*/
abstract protected function mysqlFieldName( $res, $n );
+ abstract public function fieldIsBinary( $res, $n );
+
/**
* @param $res ResultWrapper
* @param $row
@@ -1074,6 +1076,11 @@
return mysql_field_name( $res, $n );
}
+ public function fieldIsBinary( $res, $n ) {
+ $flags = explode( ' ', mysql_field_flags( $res, $n ) );
+ return in_array( 'binary', $flags );
+ }
+
protected function mysqlDataSeek( $res, $row ) {
return mysql_data_seek( $res, $row );
}
@@ -1243,6 +1250,11 @@
return $field->name;
}
+ public function fieldIsBinary( $res, $n ) {
+ $field = mysqli_fetch_field_direct( $res, $n );
+ return $field->flags & 128; // 128 = MYSQLI_BINARY_FLAG but
that was not available before PHP 5.3.0.
+ }
+
protected function mysqlDataSeek( $res, $row ) {
return mysqli_data_seek( $res, $row );
}
diff --git a/includes/installer/DatabaseInstaller.php
b/includes/installer/DatabaseInstaller.php
index 13d5d42..b0a4b63 100644
--- a/includes/installer/DatabaseInstaller.php
+++ b/includes/installer/DatabaseInstaller.php
@@ -336,7 +336,7 @@
*/
public function getReadableName() {
// Give grep a chance to find the usages:
- // config-type-mysql, config-type-postgres, config-type-sqlite,
config-type-oracle
+ // config-type-mysql, config-type-mysqli, config-type-postgres,
config-type-sqlite, config-type-oracle
return wfMessage( 'config-type-' . $this->getName() )->text();
}
diff --git a/includes/installer/Installer.i18n.php
b/includes/installer/Installer.i18n.php
index e216a2f..0bd7b3f 100644
--- a/includes/installer/Installer.i18n.php
+++ b/includes/installer/Installer.i18n.php
@@ -240,6 +240,7 @@
'config-oracle-def-ts' => 'Default tablespace:',
'config-oracle-temp-ts' => 'Temporary tablespace:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -253,6 +254,7 @@
'config-support-sqlite' => '* $1 is a lightweight database
system which is very well supported.
([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with
SQLite support], uses PDO)',
'config-support-oracle' => '* $1 is a commercial enterprise
database. ([http://www.php.net/manual/en/oci8.installation.php How to compile
PHP with OCI8 support])',
'config-header-mysql' => 'MySQL settings',
+ 'config-header-mysqli' => 'MySQLi settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
'config-header-oracle' => 'Oracle settings',
@@ -694,6 +696,7 @@
'config-sqlite-dir-help' => '{{doc-important|Do not translate
<code>.htaccess</code> and <code>/var/lib/mediawiki/yourwiki</code>.}}
Used in help box.',
'config-type-mysql' => '{{optional}}',
+ 'config-type-mysqli' => '{{optional}}',
'config-type-postgres' => '{{optional}}',
'config-type-sqlite' => '{{optional}}',
'config-type-oracle' => '{{optional}}',
@@ -1715,6 +1718,7 @@
'config-oracle-def-ts' => 'Прастора табліцаў па змоўчваньні:',
'config-oracle-temp-ts' => 'Часовая прастора табліцаў:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -2887,6 +2891,7 @@
'config-oracle-def-ts' => 'Esaouenn stokañ ("tablespace") dre ziouer :',
'config-oracle-temp-ts' => "Esaouenn stokañ (''tablespace'') da
c'hortoz :",
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -3514,6 +3519,7 @@
'config-oracle-def-ts' => 'Implicitní tabulkový prostor:',
'config-oracle-temp-ts' => 'Dočasný tabulkový prostor:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Věštba',
@@ -4118,6 +4124,7 @@
'config-oracle-def-ts' => 'Standardtabellenraum:',
'config-oracle-temp-ts' => 'Temporärer Tabellenraum:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -4828,7 +4835,7 @@
'config-using531' => 'MediaWiki no puede utilizarse con PHP $1 debido a
un error con los parámetros de referencia para <code>__call()</code> .
Actualice el sistema a PHP 5.3.2 o superior, o vuelva a la versión PHP 5.3.0
para resolver este problema.
Instalación anulada.',
- 'config-suhosin-max-value-length' => 'Suhosin está instalado y limita
el parámetro <code>length</code> GET a $1 bytes.
+ 'config-suhosin-max-value-length' => 'Suhosin está instalado y limita
el parámetro <code>length</code> GET a $1 bytes.
El componente ResourceLoader (gestor de recursos) de MediaWiki trabajará en
este límite, pero eso perjudicará el rendimiento.
Si es posible, deberías establecer <code>suhosin.get.max_value_length</code>
en el valor 1024 o superior en <code>php.ini</code> y establecer
<code>$wgResourceLoaderMaxQueryLength</code> en el mismo valor en
<code>php.ini</code>.',
'config-db-type' => 'Tipo de base de datos',
@@ -4866,7 +4873,7 @@
'config-db-wiki-help' => 'Introduce el nombre de usuario y la
contraseña que serán usados para acceder a la base de datos durante la
operación normal del wiki.
Si esta cuenta no existe y la cuenta de instalación tiene suficientes
privilegios, se creará esta cuenta de usuario con los privilegios mínimos
necesarios para la operación normal del wiki.',
'config-db-prefix' => 'Prefijo para las tablas de la base de datos:',
- 'config-db-prefix-help' => 'Si necesita compartir una base de datos
entre múltiples wikis, o entre MediaWiki y otra aplicación web, puede optar por
agregar un prefijo a todos los nombres de tabla para evitar conflictos.
+ 'config-db-prefix-help' => 'Si necesita compartir una base de datos
entre múltiples wikis, o entre MediaWiki y otra aplicación web, puede optar por
agregar un prefijo a todos los nombres de tabla para evitar conflictos.
No utilice espacios.
Normalmente se deja este campo vacío.',
@@ -4900,6 +4907,7 @@
'config-oracle-def-ts' => 'Espacio de tablas por defecto:',
'config-oracle-temp-ts' => 'Espacio de tablas temporal:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -5349,6 +5357,7 @@
'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 bitarra',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -5592,6 +5601,7 @@
'config-charset-mysql4' => 'MySQL 4.0, taaksepäin yhteensopiva UTF-8',
'config-mysql-old' => 'MediaWiki tarvitsee MySQL:n version $1 tai
uudemman. Nykyinen versio on $2.',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -5926,6 +5936,7 @@
'config-oracle-def-ts' => "Espace de stockage (''tablespace'') par
défaut :",
'config-oracle-temp-ts' => "Espace de stockage (''tablespace'')
temporaire :",
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -6750,6 +6761,7 @@
'config-oracle-def-ts' => 'Espazo de táboas por defecto:',
'config-oracle-temp-ts' => 'Espazo de táboas temporal:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -7981,6 +7993,7 @@
'config-oracle-def-ts' => 'Standardny tabelowy rum:',
'config-oracle-temp-ts' => 'Nachwilny tabelowy rum:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -9038,6 +9051,7 @@
'config-oracle-def-ts' => 'Spatio de tabellas predefinite:',
'config-oracle-temp-ts' => 'Spatio de tabellas temporari:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -9575,6 +9589,7 @@
'config-oracle-def-ts' => 'Tablespace bawaan:',
'config-oracle-temp-ts' => 'Tablespace sementara:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -10393,6 +10408,7 @@
'config-oracle-def-ts' => '既定のテーブル領域:',
'config-oracle-temp-ts' => '一時的なテーブル領域:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -11745,6 +11761,7 @@
'config-oracle-def-ts' => 'Tabälleroum för der Shtandattjebruch:',
'config-oracle-temp-ts' => 'Tabälleroum för der Jebruch zweschedorsh:',
'config-type-mysql' => '<i lang="en">MySQL</i>',
+ 'config-type-mysqli' => '<i lang="en">MySQLi</i>',
'config-type-postgres' => '<i lang="en">PostgreSQL</i>',
'config-type-sqlite' => '<i lang="en">SQLite</i>',
'config-type-oracle' => '<i lang="en">Oracle</i>',
@@ -12201,6 +12218,7 @@
'config-oracle-def-ts' => "Standard 'tablespace':",
'config-oracle-temp-ts' => "Temporären 'tablespace':",
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -12812,6 +12830,7 @@
'config-oracle-def-ts' => 'Стандарден таблеарен простор:',
'config-oracle-temp-ts' => 'Привремен табеларен простор:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -13790,6 +13809,7 @@
'config-oracle-def-ts' => 'Standard tabellrom:',
'config-oracle-temp-ts' => 'Midlertidig tabellrom:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -14299,6 +14319,7 @@
'config-oracle-def-ts' => 'Standaard tablespace:',
'config-oracle-temp-ts' => 'Tijdelijke tablespace:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -15190,7 +15211,7 @@
Możesz utworzyć konto użytkownika bazy danych podczas instalacji MediaWiki.
Wówczas należy podać nazwę i hasło użytkownika z rolą SYSDBA w celu użycia go
przez instalator do utworzenia nowe konta użytkownika, z którego korzystać
będzie MediaWiki.
-Możesz również skorzystać z konta użytkownika bazy danych utworzonego
bezpośrednio w Oracle i wówczas wystarczy podać tylko nazwę i hasło tego
użytkownika. Konto z rolą SYSDBA nie będzie potrzebne, jednak konto użytkownika
powinno mieć uprawnienia do utworzenia obiektów w schemacie bazy danych. Możesz
też podać dwa konta - konto dla instalatora, z pomocą którego zostaną obiekty w
schemacie bazy danych i drugie konto, z którego będzie MediaWiki korzystać
będzie do pracy.
+Możesz również skorzystać z konta użytkownika bazy danych utworzonego
bezpośrednio w Oracle i wówczas wystarczy podać tylko nazwę i hasło tego
użytkownika. Konto z rolą SYSDBA nie będzie potrzebne, jednak konto użytkownika
powinno mieć uprawnienia do utworzenia obiektów w schemacie bazy danych. Możesz
też podać dwa konta - konto dla instalatora, z pomocą którego zostaną obiekty w
schemacie bazy danych i drugie konto, z którego będzie MediaWiki korzystać
będzie do pracy.
W podkatalogu "maintenance/oracle" znajduje się skrypt do tworzenia konta
użytkownika. Korzystanie z konta użytkownika z ograniczonymi uprawnieniami
spowoduje wyłączenie funkcji związanych z aktualizacją oprogramowania
MediaWiki.',
'config-db-install-account' => 'Konto użytkownika dla instalatora',
@@ -15569,7 +15590,7 @@
Për agiorné sta instalassion, për piasì fà anvece giré
<code>update.php</code>",
'config-localsettings-key' => "Ciav d'agiornament:",
'config-localsettings-badkey' => "La ciav ch'it l'has dàit a l'é pa
giusta.",
- 'config-upgrade-key-missing' => "A l'é stàita trovà n'istalassion
esistenta ëd MediaWiki.
+ 'config-upgrade-key-missing' => "A l'é stàita trovà n'istalassion
esistenta ëd MediaWiki.
Për agiorné soa istalassion, për piasì ch'a buta la linia sì-sota al fond ëd
sò <code>LocalSettings.php</code>:
$1",
@@ -16394,6 +16415,7 @@
'config-oracle-def-ts' => 'Tablespace padrão:',
'config-oracle-temp-ts' => 'Tablespace temporário:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -17015,6 +17037,7 @@
'config-db-port' => "Porte d'u database:",
'config-db-schema' => 'Scheme pe MediaUicchi:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -17274,6 +17297,7 @@
'config-oracle-def-ts' => 'Пространство таблиц по умолчанию:',
'config-oracle-temp-ts' => 'Временное пространство таблиц:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -18153,6 +18177,7 @@
'config-help-restart' => 'Желите ли да обришете све сачуване податке
које сте унели и поново покренете инсталацију?',
'config-restart' => 'Да, покрени поново',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -18197,6 +18222,7 @@
'config-help-restart' => 'Želite li da obrišete sve sačuvane podatke
koje ste uneli i ponovo pokrenete instalaciju?',
'config-restart' => 'Da, pokreni ponovo',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -18925,6 +18951,7 @@
'config-oracle-def-ts' => 'Likas na nakatakdang puwang ng talahanayan:',
'config-oracle-temp-ts' => 'Pansamantalang puwang ng talahanayan:',
'config-type-mysql' => 'MySQL',
+ 'config-type-mysqli' => 'MySQLi',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -19098,7 +19125,7 @@
'config-license-gfdl' => 'Lisensiyang 1.3 ng Malayang Dokumentasyon ng
GNU o mas lalong huli',
'config-license-pd' => 'Nasasakupan ng Madla',
'config-license-cc-choose' => 'Pumili ng isang pasadyang Lisensiya ng
Malikhaing mga Pangkaraniwan',
- 'config-license-help' => "Maraming mga pangmadlang wiki ang naglalagay
ng lahat ng mga ambag sa ilalim ng [http://freedomdefined.org/Definition
lisensiyang malaya].
+ 'config-license-help' => "Maraming mga pangmadlang wiki ang naglalagay
ng lahat ng mga ambag sa ilalim ng [http://freedomdefined.org/Definition
lisensiyang malaya].
Nakakatulong ito sa paglikha ng isang diwa ng pagmamay-ari ng pamayanan at
nakapanghihikayat ng ambag na pangmahabang panahon.
Sa pangkalahatan, hindi kailangan ang isang wiking pribado o pangsamahan.
@@ -19521,7 +19548,7 @@
'config-mysql-old' => 'Необхідна MySQL $1 або пізніша, а у Вас $2.',
'config-db-port' => 'Порт бази даних:',
'config-db-schema' => 'Схема для MediaWiki',
- 'config-db-schema-help' => 'Ця схема зазвичай працює добре.
+ 'config-db-schema-help' => 'Ця схема зазвичай працює добре.
Змінюйте її тільки якщо знаєте, що Вам це потрібно.',
'config-pg-test-error' => "Не вдається підключитися до бази даних
'''$1''': $2",
'config-sqlite-dir' => 'Папка даних SQLite:',
@@ -19742,7 +19769,7 @@
'config-upload-deleted-help' => 'Оберіть папку для архівації видалених
файлів.
В ідеалі, вона не має бути доступною через інтернет.',
'config-logo' => 'URL логотипу:',
- 'config-logo-help' => 'Стандартна схема оформлення MediaWiki містить
вільне для логотипу місце над бічною панеллю розміром 135x160 пікселів.
+ 'config-logo-help' => 'Стандартна схема оформлення MediaWiki містить
вільне для логотипу місце над бічною панеллю розміром 135x160 пікселів.
Завантажте зображення відповідного розміру і введіть тут його URL.
Якщо Вам не потрібен логотип, залиште це поле пустим.',
@@ -19856,9 +19883,9 @@
'config-git' => 'Git ورژن کنٹرول مصنع لطیف ملا: <code>$1</code> ۔',
'config-git-bad' => 'GIT ورژن کنٹرول مصنع لطیف نہيں ملا ۔',
'config-mysql-only-myisam-dep' => "' ' تنبیہ: ' '[[MyISAM|مائ اسام]]
واحد دستیاب 'ذخیرہ جاتی انجن' ہے جو مائی ایس کیو ایل کے لیے ہے ، جو کہ ناموزوں
ہے میڈیا وکی کے لیے ،کیوں کہ :
-* یہ ہموار قطاروں کی سہولت بمشکل فراہم کرتا ہے
+* یہ ہموار قطاروں کی سہولت بمشکل فراہم کرتا ہے
* یہ دوسرے انجنوں کے مقابلے زیادہ بگڑ جاتا ہے
-* میڈیا وکی کوڈ بیس ہمیشہ سنبھال نہيں پاتا مائی اسام کو ۔
+* میڈیا وکی کوڈ بیس ہمیشہ سنبھال نہيں پاتا مائی اسام کو ۔
آپ کا مائی ایس کیو ایل کا نصب ہمیشہ اننو ڈی بی کی سہولت نہيں دے سکتا ، ہو سکتا
ہے یہ مزید ترقیاتی کام چاہے", # Fuzzy
'config-profile-fishbowl' => 'صرف مجاز ایڈیٹرز',
diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php
index e35719d..76766e3 100644
--- a/includes/installer/Installer.php
+++ b/includes/installer/Installer.php
@@ -85,6 +85,7 @@
*/
protected static $dbTypes = array(
'mysql',
+ 'mysqli',
'postgres',
'oracle',
'sqlite',
@@ -646,7 +647,7 @@
$allNames = array();
// Give grep a chance to find the usages:
- // config-type-mysql, config-type-postgres, config-type-oracle,
config-type-sqlite
+ // config-type-mysql, config-type-mysqli, config-type-postgres,
config-type-oracle, config-type-sqlite
foreach ( self::getDBTypes() as $name ) {
$allNames[] = wfMessage( "config-type-$name" )->text();
}
diff --git a/includes/installer/MysqlInstaller.php
b/includes/installer/MysqlInstaller.php
index 4436173..4306624 100644
--- a/includes/installer/MysqlInstaller.php
+++ b/includes/installer/MysqlInstaller.php
@@ -147,11 +147,10 @@
public function openConnection() {
$status = Status::newGood();
try {
- $db = new DatabaseMysql(
+ $db = $this->newDatabase(
$this->getVar( 'wgDBserver' ),
$this->getVar( '_InstallUser' ),
$this->getVar( '_InstallPassword' ),
- false,
false,
0,
$this->getVar( 'wgDBprefix' )
@@ -161,6 +160,10 @@
$status->fatal( 'config-connection-error',
$e->getMessage() );
}
return $status;
+ }
+
+ protected function newDatabase( $server, $user, $password, $dbName,
$flags, $tablePrefix ) {
+ return new DatabaseMysql( $server, $user, $password, $dbName,
$flags, $tablePrefix );
}
public function preUpgrade() {
@@ -430,11 +433,10 @@
if ( !$create ) {
// Test the web account
try {
- new DatabaseMysql(
+ $this->newDatabase(
$this->getVar( 'wgDBserver' ),
$this->getVar( 'wgDBuser' ),
$this->getVar( 'wgDBpassword' ),
- false,
false,
0,
$this->getVar( 'wgDBprefix' )
@@ -507,11 +509,10 @@
if ( $this->getVar( '_CreateDBAccount' ) ) {
// Before we blindly try to create a user that already
has access,
try { // first attempt to connect to the database
- new DatabaseMysql(
+ $this->newDatabase(
$server,
$dbUser,
$password,
- false,
false,
0,
$this->getVar( 'wgDBprefix' )
diff --git a/includes/installer/MysqlUpdater.php
b/includes/installer/MysqlUpdater.php
index 1c22afb..51db615 100644
--- a/includes/installer/MysqlUpdater.php
+++ b/includes/installer/MysqlUpdater.php
@@ -249,9 +249,8 @@
$tableName = $this->db->tableName( $table );
$res = $this->db->query( "SELECT $field FROM $tableName LIMIT
0", __METHOD__ );
- $flags = explode( ' ', mysql_field_flags( $res->result, 0 ) );
- if ( in_array( 'binary', $flags ) ) {
+ if ( $this->db->fieldIsBinary( $res->result, 0 ) ) {
$this->output( "...$table table has correct $field
encoding.\n" );
} else {
$this->applyPatch( $patchFile, false, "Fixing $field
encoding on $table table" );
diff --git a/includes/installer/MysqliInstaller.php
b/includes/installer/MysqliInstaller.php
new file mode 100644
index 0000000..23947cf
--- /dev/null
+++ b/includes/installer/MysqliInstaller.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * MySQLi-specific installer.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Deployment
+ */
+
+/**
+ * Class for setting up the MediaWiki database using MySQLi.
+ *
+ * @ingroup Deployment
+ * @since 1.17
+ */
+class MysqliInstaller extends MysqlInstaller {
+
+ public function isCompiled() {
+ return self::checkExtension( 'mysqli' );
+ }
+
+ public function getName() {
+ return 'mysqli';
+ }
+
+ protected function newDatabase( $server, $user, $password, $dbName,
$flags, $tablePrefix ) {
+ return new DatabaseMysqli( $server, $user, $password, $dbName,
$flags, $tablePrefix );
+ }
+
+}
--
To view, visit https://gerrit.wikimedia.org/r/62174
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7334c4872f51ef38ac17c747e2ef4a8a0236623a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Jakub Vrána <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits