codeigniter4 / CodeIgniter4

Open Source PHP Framework (originally from EllisLab)
https://codeigniter.com/
MIT License
5.33k stars 1.9k forks source link

Bug: Migration failing when the mysql database contians dots #6727

Closed Skittel closed 1 year ago

Skittel commented 1 year ago

PHP Version

8.1

CodeIgniter4 Version

4.2.7

CodeIgniter4 Installation Method

Composer (using codeigniter4/appstarter)

Which operating systems have you tested for this bug?

Linux

Which server did you use?

cli

Database

MariaDB 10.6.7

What happened?

I created a new project from scratch. Than I create a migration file and run it with spark on the cli.

php spark migrate:status CodeIgniter v4.2.7 Command Line Tool - Server Time: 2022-10-20 09:19:35 UTC-05:00 [Error] Call to a member function getResultArray() on bool at SYSTEMPATH/Database/BaseConnection.php:1389

I recheck my mysql-connection-settings: OK hostname: localhost username: project1.company.de

I created a small db test which works fine. $db = db_connect(); print_r($db->query('SELECT * from test1'));

I debugged BaseConnection.php by inserting these on line 1389. echo $sql . "\n"; die("q3");

And got this output SHOW TABLES FROM project1.company.de

CI4 tries to escape the dots in the username. I removed the db and create it new without dots in the username and everything is fine.

Stefan

Steps to Reproduce

Use a mysql connection where the username and databasename contains dots like "test1.database". Create a migration and run it.

Expected Output

no error

Anything else?

I run this project on a webserver using plesk. And plesk suggest the db- and user-name like the url from the website. Could affect more people.

Skittel commented 1 year ago

Hello,

sure it is. CI4 mysql works fine with the database and username having a dot in it. Allthough php mysql works fine.

The escaping for the dots in the migration is having a bug.

Viele Grüße und bleiben Sie gesund!

Stefan Kittel

[140308 Logo v2_600px]

Stefan Kittel IT Solutions Ziegeleistrasse 18 21423 Winsen Luhe Tel.: +49 40 2261611-80 Fax: +49 40 2261611-89 Web: www.skittel.dehttp://www.skittel.de/

Die in dieser Nachricht enthaltenen Informationen können vertraulich sein und sind ausschließlich für den Adressaten bestimmt. Sollten Sie nicht der vorgesehene Empfänger sein, so bitten wir Sie, den Absender unverzüglich zu informieren und die E-Mail zu löschen. Eine nicht autorisierte Verwendung, Verbreitung oder Kopie ist nicht gestattet. Wir weisen darauf hin, dass über das Internet per E-Mail übermittelte Nachrichten verändert oder verfälscht werden können. Herkömmliche E-Mails sind nicht gegen den Zugriff Dritter geschützt, so dass unter Umständen auch die Vertraulichkeit nicht gewahrt sein kann. Von der Übermittlung sensibler Geschäftsdaten sollten Sie daher absehen.

Von: chirag jagani @.> Gesendet: Donnerstag, 20. Oktober 2022 17:28 An: codeigniter4/CodeIgniter4 @.> Cc: Stefan Kittel @.>; Author @.> Betreff: Re: [codeigniter4/CodeIgniter4] Bug: Migration failing when the mysql username contians dots (Issue #6727)

It is not a bug

— Reply to this email directly, view it on GitHubhttps://github.com/codeigniter4/CodeIgniter4/issues/6727#issuecomment-1285746516, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC5UU72LZ64R47OQWHNOXN3WEFQHJANCNFSM6AAAAAARKG54N4. You are receiving this because you authored the thread.Message ID: @.***>

michalsn commented 1 year ago

Generally, if something is allowed, it doesn't automatically mean it should be used. And this is the case.

CodeIgniter doesn't support dots in the database, table, and column names.

Skittel commented 1 year ago

Hello,

sure. I’m with you. Than i suggest to insert a check if the user- or databasename contains dots and create an exeption. Would only a few lines and would saved me 1 hour to find out.

Viele Grüße und bleiben Sie gesund!

Stefan Kittel

[140308 Logo v2_600px]

Stefan Kittel IT Solutions Ziegeleistrasse 18 21423 Winsen Luhe Tel.: +49 40 2261611-80 Fax: +49 40 2261611-89 Web: www.skittel.dehttp://www.skittel.de/

Die in dieser Nachricht enthaltenen Informationen können vertraulich sein und sind ausschließlich für den Adressaten bestimmt. Sollten Sie nicht der vorgesehene Empfänger sein, so bitten wir Sie, den Absender unverzüglich zu informieren und die E-Mail zu löschen. Eine nicht autorisierte Verwendung, Verbreitung oder Kopie ist nicht gestattet. Wir weisen darauf hin, dass über das Internet per E-Mail übermittelte Nachrichten verändert oder verfälscht werden können. Herkömmliche E-Mails sind nicht gegen den Zugriff Dritter geschützt, so dass unter Umständen auch die Vertraulichkeit nicht gewahrt sein kann. Von der Übermittlung sensibler Geschäftsdaten sollten Sie daher absehen.

Von: Michal Sniatala @.> Gesendet: Donnerstag, 20. Oktober 2022 18:32 An: codeigniter4/CodeIgniter4 @.> Cc: Stefan Kittel @.>; Author @.> Betreff: Re: [codeigniter4/CodeIgniter4] Bug: Migration failing when the mysql username contians dots (Issue #6727)

Generally, if something is allowed, it doesn't automatically mean it should be used. And this is the case.

CodeIgniter doesn't support dots in the database, table, and column names.

— Reply to this email directly, view it on GitHubhttps://github.com/codeigniter4/CodeIgniter4/issues/6727#issuecomment-1285844642, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC5UU7YSKI7BYFHL2SMEY33WEFXYPANCNFSM6AAAAAARKG54N4. You are receiving this because you authored the thread.Message ID: @.**@.>>