-
-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem mit MariaDB 10.2.4 oder höher #918
Comments
Das ist doch Sch**e. Sowas macht man nicht in einem Bugfix-Release! 😢 |
@contao/developers Wie lösen wir das? Mir wäre es am liebsten, wenn wir es erst in Contao 4.5 ändern würden. Dann wären beide LTS-Versionen aber nicht kompatibel zu MariaDB 10.2.4+. |
Hab mir den Code noch ned angeschaut aber Quoten mit Unicode U+0060 ` RAVE ACCENT sollte funktionieren ist hier leider für die Codeansicht belegt... also "'rows'" mit den Raves. |
Roundcube stumbled over this too: roundcube/roundcubemail#5805 |
Technically |
I doubt that this change will fix the issue. First of all, |
As discussed in Mumble on July 13th, we want to try to escape the field as renaming would break all themes. |
There seem to be more issues with MariaDB 10.2. I have just updated to MariaDB 10.2.7 and now the Doctrine schema tool is no longer working: @aschempp /cc |
The following code in foreach ($schema->getTables() as $table) {
foreach ($table->getColumns() as $column) {
switch ($column->getDefault()) {
case "1":
$column->setDefault("'1'");
break;
case "''":
$column->setDefault('');
break;
case 'NULL':
$column->setDefault(null);
break;
}
}
} |
that sounds like a Doctrine issue actually? The default value should be an empty string or NULL, and not a string of quotes? |
It is not a Doctrine issue: MariaDB/server@291411c |
I can confirm that the issue only occurs in MariaDB 10.2.7, so I assume that it will be fixed in 10.2.8. |
Ok, regarding the other issue: https://jira.mariadb.org/browse/MDEV-13339 |
In case the MariaDB developers decide not to revert the regression bug, we could fix the issue by adding the following to the // Manually quote "rows", which has become a reserved keyword in MariaDB 10.2.4
// and is not handled in the MySQLKeywords class
if (false !== strpos($sql, ' rows ')) {
$sql = str_replace(' rows ', ' `rows` ', $sql);
} |
https://jira.mariadb.org/browse/MDEV-13339
|
So it will (have to) be fixed in Doctrine: doctrine/dbal#2768 |
Meanwhile we have to temporary escape this in Contao, right? I think in
|
Do we? Contao is simply not compatible with MariaDB 10.2 until the issue has been fixed in Doctrine. Version 10.1 is still active (even 10.0), so there is no urgent reason to update to MariaDB 10.2. |
Just because Doctrine escapes the column does not fix it in the Contao framework. We're not using the query builder or ORM, I hardly think Doctrine will parse the SQL and fix the escaping. Also, you can't really control the dB version, so you're lucky if your Hoster does or does not update… |
Na toll. Ist gefixt in dbal 2.6.0, leider nicht in der 2.5.13 (kam ein Tag vorher), denn die 2.6.0 hat neue Anforderungen bekommen:
Damit wird es dann wohl doch erst was in Contao 4.5? |
Ich denke nicht dass Contao hier etwas tun kann oder sollte. Wenn du MariaDB 10.2.4+ nutzt musst du halt auch PHP 7.1 nutzen. Composer wird dir das automatisch installieren falls der Server entsprechend ist.
|
Wäre das Problem im Contao-Framework nicht relativ schnell behoben indem man in Contao/Database/Statement.php:196 folgendes einbaut:
und die Spalte erst in Contao 4.5 umbenennt? Andererseits ist Contao 4.4 eine LTS Version und somit würde der Fehler in den nächsten vier Jahren für alle auftreten die PHP < 7.1 mit MariaDB >= 10.2.4 einsetzen, sofern doctrine/dbal keinen bugfix in einer 2.5.x released. Meine bevorzugte Variante wäre den bug im Contao-Framework zu fixen und
Theme-Import und Models könnten wir anpassen. Der SQL-Website-Import aus dem Install-Tool wird jedoch nicht kompatibel sein. |
Ich glaube nicht, denn das Problem tritt ja nicht nur beim UPDATE auf, sondern auch beim SELECT. Und SELECT machen wir sowohl mittels |
Der DC_Table verwendet für das // Where condition
if ($arrOptions['column'] !== null)
{
if (is_array($arrOptions['column'])) {
$strColumn = implode(" AND ", $arrOptions['column']);
}
else {
$strColumn = $arrOptions['column'];
if (strtolower($strColumn) === 'rows') {
$strColumn = '`rows`';
}
$strColumn = $arrOptions['table'] . '.' . $strColumn . "=?";
}
$strQuery .= " WHERE " . $strColumn;
} |
Ich habe als Quickfix jetzt mal wie von @ausi vorgeschlagen
und
gepatched und dann nochmal im Statement.php obendrueber ("INSERT") creation auch einfach noch fies $strQuery = str_replace("rows, "," reingebügelt... in Zeile 187: jetzt geht es und kann natuerlich zu seltsamen effekten fuehren, wenn jemand einen Artikel schreibt, in dem "she brushed her eyebrows, and went" vorkommt :-), aber das sollte halten, bis es einen offziellen patch gibt... |
Das wird leider nicht passieren, siehe doctrine/dbal#2768 (comment) Es bleibt uns also nichts anderes übrig als die Spalte umzubenennen. Die SQL-Struktur für den Website-Import ist dann von 4.4.3 nicht mit 4.4.4 kompatibel. |
Es würde IMHO Sinn machen, die Spaltennamen in einem neuen Contao-Release zu escapen, vielleicht die beste Rangehensweise, da ich auch "cols" als Spaltenname gesehen habe... |
Ich sehe kein Problem darin das in Contao zu umgehen. Eine Änderung der Spalte halte ich für sehr problematisch. Da wir bei Queries immer |
Ich denke das Issue kann geschlossen werden zugunsten von #1262 |
Wie ist hier der aktuelle Stand?
|
@mlwebworker welche PHP Version? Wie hast du Contao installiert? |
Installation über den Manager, letztes Update heute über die Konsole. Nachtrag: Der Unterschied zwischen Manager und Konsole ist dem "schönen" Umstand geschuldet, dass ich auf der Konsole über php72 die Version 7.2.1 zu fassen bekomme und über php7.2 die Version 7.2.7. |
Zeige mal den output von |
Hier das Ergebnis |
Ich habe nach einer Installation einer Erweiterung ebenfalls eine Fehlermeldung bezüglich tl_layout und Maria DB. Contao Version 4.4.28 [2019-01-07 11:14:01] request.INFO: Matched route "contao_install". {"route":"contao_install","route_parameters":{"_scope":"backend","_token_check":true,"_controller":"Contao\InstallationBundle\Controller\InstallationController::installAction","_route":"contao_install"},"request_uri":"https://www.xxx.ch/contao/install","method":"HEAD"} [] |
Bei Fehlern solltest Du immer erst auf die aktuelle Version updaten (derzeit Contao 4.4.32)! |
Vielen Dank für deine Antwort, Hannes. Das stellt mich vor ein weiteres Problem. Wenn ich das richtig verstehe, ist es ohne SSH Zugang nicht (oder nicht ohne Probleme) möglich, ein Update zu machen.
Oder gibt es hier mittlerweile eine Lösung?
… Am 07.01.2019 um 17:42 schrieb Hannes ***@***.***>:
Bei Fehlern solltest Du immer erst auf die aktuelle Version updaten (derzeit Contao 4.4.32)!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#918 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/Aii796Ky1D29_0azZP96tDTIsVIukGncks5vA3kJgaJpZM4OMLH->.
|
Wende dich an das Community Forum. |
Ab MariaDB 10.2.4 ist das Wort "rows" nun reserviert
Siehe: https://mariadb.com/kb/en/mariadb/reserved-words/
Das führt bei der Installlation von Contao 4.4. zum Error:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'rows VARCHAR(8) DEFAULT '' NOT NULL
The text was updated successfully, but these errors were encountered: