How to Migrate Laravel solution from MS SQL Server to MySQL - php

I am newbie to Laravel 5 and 6. I have very specific question, solution was developed using laravel and MSSQL server as DB server. Now I want to change Database from MSSQL to MySQL, is there any automated way to achieve this ? Or how cumbersome is this process and what will be the step to achieve this?
Thanks & regards

If with solution, you mean to migrate the logic and don't care about data.
Simply create a new database in MySQL.
Config .env file to use said db, for example:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my-db-name-here
DB_USERNAME=root
DB_PASSWORD=
Clear all cache, like:
php artisan config:clear --no-ansi
php artisan cache:clear --no-ansi
composer dump-autoload
php artisan view:clear --no-ansi
php artisan route:clear --no-ansi
Test if the routes work, like:
php artisan route:list --no-ansi
At last, recreate DB structure, like:
php artisan migrate --no-ansi
If your project is new, there are no seed, else another useful command would be:
php artisan db:seed --no-ansi
But if Data are required:
The steps are basically the same as above;
But either you need to follow instructions at:
https://www.thegeekstuff.com/2014/03/mssql-to-mysql/
Which shows how to directly copy data from source DB to destination.
Or you will need to:
Export your MS SQL Server as SQL-file (or zip).
Find/pick a tool, which converts SQL-files from "MS SQL Server" syntax/format to "MySQL" format.
Import resulting SQL-file in MySQL.

Related

Why does my laravel app request favicon.ico? [duplicate]

I'm trying to use the Artisan command like this:
php artisan serve
It displays:
Laravel development server started: http://127.0.0.1:8000
However, it won't automatically launch and when I manually enter http://127.0.0.1:8000 it shows this error:
RuntimeException No application encryption key has been specified.
What's the cause of this problem, and how can it be fixed?
I'm using Laravel framework 5.5-dev.
From Encryption - Laravel - The PHP Framework For Web Artisans:
"Before using Laravel's encrypter, you must set a key option in your
config/app.php configuration file. You should use the
php artisan key:generate command to generate this key"
From Encryption - Laravel - The PHP Framework For Web Artisans:
"Before using Laravel's encrypter, you must set a key option in your config/app.php configuration file. You should use the php artisan key:generate command to generate this key"
I found it using this query in google.com:
"laravel add encrption key" (Yes, it worked even with the typo!)
Note that if the .env file contains the key but you are still getting an application key error, then run php artisan config:cache to clear and reset the config.
In my case, I also needed to reset the cached config files:
php artisan key:generate
php artisan config:cache
Open command prompt in the root folder of your project and run below command:
php artisan key:generate
It will generate Application Key for your application.
You can find the generated application key(APP_KEY) in .env file.
Copy .env.example to .env:
cp -a .env.example .env
Generate a key:
php artisan key:generate
Only then run:
php artisan serve
Simply run this command:
php artisan key:generate
cp .env.example .env if there is no .env file present.
php artisan key:generate command works for me. It generates the encryption key
Open command prompt in the root folder of your project and run
php artisan key:generate
Then
php artisan config:cache
and Then
If you're getting the same error after having key-value, then just copy the APP_KEY value from .env file and paste it to config/app.php with 'key' => 'YOUR KEY',
and then again run
php artisan config:cache
I actually had to add a .env file to my project and then copy the contents of .env.example so that the key:generate would work. Not sure why a .env file was not created when I started the project.
In 3 steps:
Generate new key php artisan key:generate
Clear the config php artisan config:clear
Update cache php artisan config:cache
php artisan key:generate
php artisan config:cache
worked for me, but it had to be done in a command prompt on Windows.
Doing it inside the terminal in PHPStorm didn't worked.
A common issue you might experience when working on a Laravel application is the exception:
RuntimeException No application encryption key has been specified.
You'll often run into this when you pull down an existing Laravel application, where you copy the .env.example file to .env but don't set a value for the APP_KEY variable.
At the command line, issue the following Artisan command to generate a key:
php artisan key:generate
This will generate a random key for APP_KEY, After completion of .env edit please enter this command in your terminal for clear cache:php artisan config:cache
Also, If you are using the PHP's default web server (eg. php artisan serve) you need to restart the server changing your .env file values. now you will not get to see this error message.
Follow this steps:
php artisan key:generate
php artisan config:cache
php artisan serve
Simply run command php artisan key:generate.. Still issue exist then run one more command php artisan config:cache and php artisan cache:clear ..
Now run php artisan serve
Okay, I'll write another instruction, because didn't find the clear answer here. So if you faced such problems, follow this:
Rename or copy/rename .env.example file in the root of your project to .env.
You should not just create empty .env file, but fill it with
content of .env.example.
In the terminal go to the project root directory(not public folder) and run
php artisan key:generate
If everything is okay, the response in the terminal should look like this
Application key [base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA=]
set successfully.
Now just copy key itself and paste it in your .env file as the value to APP_KEY. Result line should look like this:
APP_KEY=base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA=
In terminal run
php artisan config:cache
That's it.
I found that most answers are incomplete here. In case anyone else is still looking for this:
Check if you have APP_KEY= in your .env, if not just add it without a value.
Run this command: php artisan key:generate. This will fill in the value to the APP_KEY in your .env file.
Finally, run php artisan config:cache in order to clear your config cache and recache your config with the new APP_KEY value.
You can generate Application Encryption Key using this command:
php artisan key:generate
Then, create a cache file for faster configuration loading using this command:
php artisan config:cache
Or, serve the application on the PHP development server using this command:
php artisan serve
That's it!
If you git clone some project then this kind of issue may usually occur.
make sure there is .env file
run php artisan key:generate and then it should generate APP_KEY in .env
finally run php artisan serve and it should be working.
If you don't have a .env file then run the below command, else skip this
cp .env.example .env
Then run the below artisan command and it will generate an application key for your project:
php artisan key:generate
Note: Your APP_KEY is inside your .env file.
If after running php artisan key:generate issue is not resolved, check your .env file.
Search for APP_KEY=.
If it doesn't exist, manually add it to .env file and run php artisan key:generate again.
After this you will see generated key in .env file.
Copy that key and paste it in /config/app.php (search for APP_KEY there as well). You should end up with something like this in app.php file
'key' => env('APP_KEY', 'base64:...'),
Then run php artisan serve (You might have to run php artisan config:cache at some point. Not 100% sure when)
I ran into this issue when I manually copied the contents of my Laravel project (say sites/oldname) into a new directory on my Mac (say, sites/newname). Since I was manually dragging and droppping, it didn't grab the hidden files, namely, '.env'.
When I looked more closely at sites/oldname I saw .editorconfig, .env, .env.example, .gitatrributes, .styleci.yml, etc.
The error went away once I copied the hidden files to the new directory.
So, "No Application Encryption Key Has Been Specified" is Laravel speak for "your .env file is missing."
Sometimes If everything Fails Use this:
Goto: laravelProject/config/app.php
Find the line: 'key' => and check to what it refers,
It can either be one of two:
Case 1: env('APP_KEY')
Case 2: "somekeystring"
For Case 1:
Goto your .env file after you have run cp -a .env.example .env
Enter a random string like 10101010101010101010101010101010
Now, run php artisan key:generate
Your key will be updated automatically.
For Case 2:
set a random string like for value of Key 10101010101010101010101010101010
Now, run php artisan key:generate
Your key will be updated automatically.
Facing the Same Issue in Laravel v8.49.0 (PHP v8.0.6) Solution
Click
Genrate app key
Click on Refresh now
simply run
php artisan key:generate
its worked for me
Try setting correct file permissions
chmod -R 777 storage/
chmod 777 bootstrap/cache/
Run below command to set app key
php artisan key:generate
By running the above command, it sets the key value in .env of your project directory which is referenced in the app config
// .env
APP_KEY=base64:XkrFWC+TGnySY2LsldPXAxuHpyjh8UuoPMt6yy2gJ8U=
// config/app.php
'key' => env(APP_KEY);
Restart your server, in order to reflect the above change.
I had to restart my queue worker using php artisan queue:restart after running php artisan key:generate to get jobs working.

php artisan migrate - tables not created in phpMyAdmin

I am following this tutorial here https://www.youtube.com/watch?v=Jbt5bEgv_QM and got stuck in the php artisan migrate part because of this issue. I'm not sure if it's compatibility issue or something. I am fairly new to laravel.
Here's the database.php file and .env file.
UPDATE: i managed to perform the migration using the solutions provided by the user PHP. However, i couldn't find the table in my phpMyAdmin. do i need to change mySQL root password for that? i have actually set the password but in .env and database.php files i left it blank because the migration works that way. if i set the actual password in both files, I'd get access denied error.
Here's the migration files...
php artisan migrate:rollback then run php artisan migrate.
If you make changes to your migration files, simply run php artisan migrate:refresh
1)First you have to Create your related Database.
2)Then:php artisan cache:clear
3)Now run php artisan migrate:install

php artisan serve get cached or does not react while updating code in Laravel 5.5. After a restart, it works again each time

My IDE is phpstorm and running on WAMP Server. While coding, it does not show the expected response, always returns the previously requested response (In postman). Each time, I need to close 'php artisan serve' with CTRL+C and then run again to get the expected response.
I tried changing IDE, changing port but it does not work. Of course, I tired to save manually ( CTRL+S) but the problem persists.
I also tried the following commands:
php artisan cache:clear
php artisan config:clear
php artisan route:clear
composer dump
But the problem still persists.
The issue might be the composer command. Please, have a look on my setup in the Makefile:
run:
php artisan config:cache
php artisan config:clear
php artisan cache:clear
composer.phar dump-autoload -o
php artisan serve
And it's ready to go with a Laravel's "clean build".
Can you try with a diferent request tool, like doing a GET on your browser?
Or just create a new endpoint to test that. This way you make sure that changes are being saved.
I recommend you make tests to see if:
the problem is on your postman (a cache maybe?);
the problem is that your code isn't being saved;
the problem is on your local server (a persistent cache?);
My tip is: Try to eliminate the possible causes and you should achieve an answer.
Let´s try to make sure about above items and if them are ok, we check possible another ones.

No Application Encryption Key Has Been Specified

I'm trying to use the Artisan command like this:
php artisan serve
It displays:
Laravel development server started: http://127.0.0.1:8000
However, it won't automatically launch and when I manually enter http://127.0.0.1:8000 it shows this error:
RuntimeException No application encryption key has been specified.
What's the cause of this problem, and how can it be fixed?
I'm using Laravel framework 5.5-dev.
From Encryption - Laravel - The PHP Framework For Web Artisans:
"Before using Laravel's encrypter, you must set a key option in your
config/app.php configuration file. You should use the
php artisan key:generate command to generate this key"
From Encryption - Laravel - The PHP Framework For Web Artisans:
"Before using Laravel's encrypter, you must set a key option in your config/app.php configuration file. You should use the php artisan key:generate command to generate this key"
I found it using this query in google.com:
"laravel add encrption key" (Yes, it worked even with the typo!)
Note that if the .env file contains the key but you are still getting an application key error, then run php artisan config:cache to clear and reset the config.
In my case, I also needed to reset the cached config files:
php artisan key:generate
php artisan config:cache
Open command prompt in the root folder of your project and run below command:
php artisan key:generate
It will generate Application Key for your application.
You can find the generated application key(APP_KEY) in .env file.
Copy .env.example to .env:
cp -a .env.example .env
Generate a key:
php artisan key:generate
Only then run:
php artisan serve
Simply run this command:
php artisan key:generate
cp .env.example .env if there is no .env file present.
php artisan key:generate command works for me. It generates the encryption key
Open command prompt in the root folder of your project and run
php artisan key:generate
Then
php artisan config:cache
and Then
If you're getting the same error after having key-value, then just copy the APP_KEY value from .env file and paste it to config/app.php with 'key' => 'YOUR KEY',
and then again run
php artisan config:cache
I actually had to add a .env file to my project and then copy the contents of .env.example so that the key:generate would work. Not sure why a .env file was not created when I started the project.
In 3 steps:
Generate new key php artisan key:generate
Clear the config php artisan config:clear
Update cache php artisan config:cache
php artisan key:generate
php artisan config:cache
worked for me, but it had to be done in a command prompt on Windows.
Doing it inside the terminal in PHPStorm didn't worked.
A common issue you might experience when working on a Laravel application is the exception:
RuntimeException No application encryption key has been specified.
You'll often run into this when you pull down an existing Laravel application, where you copy the .env.example file to .env but don't set a value for the APP_KEY variable.
At the command line, issue the following Artisan command to generate a key:
php artisan key:generate
This will generate a random key for APP_KEY, After completion of .env edit please enter this command in your terminal for clear cache:php artisan config:cache
Also, If you are using the PHP's default web server (eg. php artisan serve) you need to restart the server changing your .env file values. now you will not get to see this error message.
Follow this steps:
php artisan key:generate
php artisan config:cache
php artisan serve
Simply run command php artisan key:generate.. Still issue exist then run one more command php artisan config:cache and php artisan cache:clear ..
Now run php artisan serve
Okay, I'll write another instruction, because didn't find the clear answer here. So if you faced such problems, follow this:
Rename or copy/rename .env.example file in the root of your project to .env.
You should not just create empty .env file, but fill it with
content of .env.example.
In the terminal go to the project root directory(not public folder) and run
php artisan key:generate
If everything is okay, the response in the terminal should look like this
Application key [base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA=]
set successfully.
Now just copy key itself and paste it in your .env file as the value to APP_KEY. Result line should look like this:
APP_KEY=base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA=
In terminal run
php artisan config:cache
That's it.
I found that most answers are incomplete here. In case anyone else is still looking for this:
Check if you have APP_KEY= in your .env, if not just add it without a value.
Run this command: php artisan key:generate. This will fill in the value to the APP_KEY in your .env file.
Finally, run php artisan config:cache in order to clear your config cache and recache your config with the new APP_KEY value.
You can generate Application Encryption Key using this command:
php artisan key:generate
Then, create a cache file for faster configuration loading using this command:
php artisan config:cache
Or, serve the application on the PHP development server using this command:
php artisan serve
That's it!
If you git clone some project then this kind of issue may usually occur.
make sure there is .env file
run php artisan key:generate and then it should generate APP_KEY in .env
finally run php artisan serve and it should be working.
If you don't have a .env file then run the below command, else skip this
cp .env.example .env
Then run the below artisan command and it will generate an application key for your project:
php artisan key:generate
Note: Your APP_KEY is inside your .env file.
If after running php artisan key:generate issue is not resolved, check your .env file.
Search for APP_KEY=.
If it doesn't exist, manually add it to .env file and run php artisan key:generate again.
After this you will see generated key in .env file.
Copy that key and paste it in /config/app.php (search for APP_KEY there as well). You should end up with something like this in app.php file
'key' => env('APP_KEY', 'base64:...'),
Then run php artisan serve (You might have to run php artisan config:cache at some point. Not 100% sure when)
I ran into this issue when I manually copied the contents of my Laravel project (say sites/oldname) into a new directory on my Mac (say, sites/newname). Since I was manually dragging and droppping, it didn't grab the hidden files, namely, '.env'.
When I looked more closely at sites/oldname I saw .editorconfig, .env, .env.example, .gitatrributes, .styleci.yml, etc.
The error went away once I copied the hidden files to the new directory.
So, "No Application Encryption Key Has Been Specified" is Laravel speak for "your .env file is missing."
Sometimes If everything Fails Use this:
Goto: laravelProject/config/app.php
Find the line: 'key' => and check to what it refers,
It can either be one of two:
Case 1: env('APP_KEY')
Case 2: "somekeystring"
For Case 1:
Goto your .env file after you have run cp -a .env.example .env
Enter a random string like 10101010101010101010101010101010
Now, run php artisan key:generate
Your key will be updated automatically.
For Case 2:
set a random string like for value of Key 10101010101010101010101010101010
Now, run php artisan key:generate
Your key will be updated automatically.
Facing the Same Issue in Laravel v8.49.0 (PHP v8.0.6) Solution
Click
Genrate app key
Click on Refresh now
simply run
php artisan key:generate
its worked for me
Try setting correct file permissions
chmod -R 777 storage/
chmod 777 bootstrap/cache/
Run below command to set app key
php artisan key:generate
By running the above command, it sets the key value in .env of your project directory which is referenced in the app config
// .env
APP_KEY=base64:XkrFWC+TGnySY2LsldPXAxuHpyjh8UuoPMt6yy2gJ8U=
// config/app.php
'key' => env(APP_KEY);
Restart your server, in order to reflect the above change.
I had to restart my queue worker using php artisan queue:restart after running php artisan key:generate to get jobs working.

Using Laravel Migrate how can I refresh a single database?

I have 2 databases and I used the following command:
php artisan migrate:refresh
This cleared both databases and rebuilt the tables, however I'd like to do this only for a single database. How can I do this?
Try using the --database option:
php artisan migrare:refresh --database=connectionName
For future reference, you can get help with arguments and options for any Artisan command by running:
php artisan help CommandName

Categories