I have discovered some wired behavior, I have that one CI4 project i am working on since a couple of weeks. everything is working just fine, but until now i have just been working with the project on my local machine. When i wanted to run the project on my Laptop in ran into an error when i tried to run the migrations with php spark migrate -all
CodeIgniter CLI Tool - Version 4.0.4 - Server-Time: 2020-07-20 06:16:02am
Running all new migrations...
An uncaught Exception was encountered
Type: CodeIgniter\Database\Exceptions\DatabaseException
Message: Unable to connect to the database.
Filename: /opt/lampp/htdocs/sms/vendor/codeigniter4/framework/system/Database/BaseConnection.php
Line Number: 425
The project includes Myth/auth, so i tried just to run "my" migration with php spark migrate . That just worked fine, no problem at all, the tables are there, no errors. Just for fun, i moved my Math/auth migrations from the vendor folder to the "normal" Database/Migrations folder and was able to migrate them that way.
That's very wired, especially since everything is working just fine on the PC I have been using before. There I am able to run the migrations using php spark migrate -all without any errors, when is set up a fresh MySQL/MariahDB database. But somehow only there.
I was able to reproduce the error on my laptop on my Manjaro partition, my Windows 10 partition and on my iMac. So if you want to reproduce the error do the following:
composer create-project codeigniter4/appstarter whatever
rename the
env
to .env
set
CI_ENVIRONMENT = development
and obviously uncomment that lineconfigure and uncomment your database setting in the .env
create a sample migration like the one from the docs using
> php spark migrate:create AddBlog
add the following content to the new migration and save the file:
forge->addField([ 'blog_id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'blog_title' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'blog_description' => [ 'type' => 'TEXT', 'null' => true, ], ]); $this->forge->addKey('blog_id', true); $this->forge->createTable('blog'); } public function down() { $this->forge->dropTable('blog'); } }run
> composer require myth/auth
Edit app/Config/Email.php and verify that a fromName and fromEmail are set as that is used when sending emails for password reset, etc.
Edit app/Config/Validation.php and add the following value to the ruleSets array: \Myth\Auth\Authentication\Passwords\ValidationRules::class
Ensure your database is setup correctly, then run the Auth migrations:
php spark migrate -all
As a result you will also have the above error. I was not able to get around that error, except for the system in was working with at first.
If you just use
php spark migrate
it will migrate the sample migration without any errors