Seite 1 von 1

Migration Bug auf höhere Version

Verfasst: 17.01.2015 18:56
von Gast234254
Bei meiner Imprint Extension möchte ich die Migration zu Version 1.0.4 tätigen. Funktioniert aber nicht. Das Update zu Version 1.0.1, 1.0.2 und 1.0.3 funktioniert. Bei einer Neuinstallation wird 1.0.4 als Versionsnummer in die Datenbank eingetragen und die Änderung von value (vchar255 zu vchar500) funktioniert auch. Nur ein Update von 1.0.3 zu 1.0.4 schlägt fehl. Die Versionsnummer wird nicht aktualisiert und die Änderungen von value wird auch nicht getätigt.
Im root migration sind noch folgende Dateien
  • v_1_0_0.php
  • v_1_0_1.php
  • v_1_0_2.php
  • v_1_0_3.php
Was ist hier falsch?
migration/v_1_0_4.php

Code: Alles auswählen

/**
*
* @package wintstar Imprint Extension
* @copyright (c) 2014 wintstar
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

namespace wintstar\imprint\migrations;

class v_1_0_4 extends \phpbb\db\migration\migration
{
	public function effectively_installed()
	{
		return isset($this->config['imprint_version']) && version_compare($this->config[' imprint_version'], '1.0.4', '>=');
	}

	static public function depends_on()
	{
			return array('\wintstar\imprint\migration\v_1_0_3');
	}

	public function update_data()
	{
		return array(
		// Set the current version
		array('config.update',  array('imprint_version', '1.0.4')),
	);
}

public function update_schema()
{
		$sql = 'ALTER TABLE ' . $this->table_prefix . 'imprint
		 MODIFY value varchar(500)';
		$this->sql_query($sql);
	}
}
Wenn ich diesen Block weglasse, geht es auch nicht

Code: Alles auswählen

public function update_schema()
{
		$sql = 'ALTER TABLE ' . $this->table_prefix . 'imprint
		 MODIFY value varchar(500)';
		$this->sql_query($sql);
	}
Auch nur ein Update auf Version 1.0.4 schlägt fehl.

Re: Migration Bug auf höhere Version

Verfasst: 17.01.2015 19:18
von tas2580

Code: Alles auswählen

MODIFY value varchar(500)
Welche MySQL Version benutzt du? Bis zur Version 5.0 ? geht nur varchar(255), wenn du mehr willst musst du mediumtext oder text benutzen.

Gruß Tobi

Re: Migration Bug auf höhere Version

Verfasst: 17.01.2015 19:28
von Gast234254
Danke Tobi. MySQL-Version 5.5.37.

Aber auch wenn ich die Änderung von value weglasse, aktualisiert es nicht zu Version 1.0.4. Als Neuinstallation funktioniert die Änderung von value und der Eintrag der Version 1.0.4 .

Re: Migration Bug auf höhere Version

Verfasst: 18.01.2015 02:43
von Elsensee
Mal abgesehen von diesem Post über das Ändern von Spalten in Tabellen, :wink: hast du in der Funktion effectively_installed() ein Leerzeichen zu viel bei $this->config[' imprint_version'].

Warum es dann aber bloß bei der Installation funtkioniert, weiß ich auch nicht. :-?

Re: Migration Bug auf höhere Version

Verfasst: 18.01.2015 06:52
von Gast234254
Auch hier Danke an Elsensee. Der Bug mit dem Leerzeichen fiel mir nicht auf. Das merkwürdige, auf meinem Linux-Server funktioniert das Update. Aber auf xampp-localhost (Windows) nicht.

XAMPP 1.8.3
PHP Version 5.5.15
MySQL-Version 5.6.20

Linux-Server
PHP Version 5.5.18
MySQL-Version 5.5.40

Verstehe ich irgendwie nicht :-? Ein Bug von phpBB 3.1.* oder Serverkonfiguration oder ???

Re: Migration Bug auf höhere Version

Verfasst: 19.01.2015 00:51
von gn#36
Mich irritiert gerade $this->sql_query($sql);. Ist die Klasse von der DBAL Klasse abgeleitet?

Re: Migration Bug auf höhere Version

Verfasst: 19.01.2015 01:10
von Elsensee
Nein, ist sie nicht, aber die Klasse phpbb\db\migration\migration implementiert diese als Wrapper, weil... is' halt so. :-?

Es wird halt verhindert, dass ein General Error ausgelöst wird. Was dann mit den Fehlern passiert, weiß ich nicht. Auf jeden Fall werden sie in einem Array gespeichert...
Vielleicht verlangen die Entwickler von Extension-Autoren, selbst diese Fehler auszugeben, aber ich weiß es nicht. (und auch nicht wie, denn echo soll man ja nicht verwenden)

Re: Migration Bug auf höhere Version

Verfasst: 19.01.2015 09:04
von Gast234254
Auf jeden Fall werden sie in einem Array gespeichert...
...selbst diese Fehler auszugeben
Aber wie bekomme ich das als Entwickler ausgegeben? Müsste dann ja im Fehlerprotokoll gespeichert sein, oder?

Re: Migration Bug auf höhere Version

Verfasst: 19.01.2015 22:02
von Elsensee
Wie gesagt - ich weiß nicht genau, wie das gedacht ist, aber zumindest kannst von deiner Migration aus auf das Array $this->errors zugreifen, das wie folgt aufgebaut ist:

Code: Alles auswählen

$errors = array(
    1 => array(
        'sql'     => SQL,
        'code'    => SQL_ERROR,
    ),
    2 => array(
        'sql'     => SQL,
        'code'    => SQL_ERROR,
    ),
); 
Da du von einer Migration sonst bloß noch Zugriff auf das $config-Objekt, das $db-Objekt, ein $db_tools-Objekt, den Tabellenpräfix, den phpBB Root Path, die php_ext und die SQL-Querys hast (allerdings nur die, die über $this->sql_query() gemacht worden sind) weiß ich nicht genau, was man nun mit den Fehlern machen soll... :roll:

Re: Migration Bug auf höhere Version

Verfasst: 22.01.2015 09:34
von Gast234254
Ich habe mir das näher angesehen. Aber durchblicken tue ich kaum.