I type php artisan make:migartion ... and php artisan migrate, but table was not created - laravel-5

I create laravel5,mysql8 environment with docker-compose.
I create post table with laravel migration.
but I entered mysql container and checked if the table was created, but the table was not created.
I type php artisan make:migration create_posts_table and It works.
Then, I did the following.
as pictured, table is not exist.
why is this?
Thank you for your help.

have you run migrate in terminal? and check your table name
php artisan migrate
or check your env for db name

Related

Bad: How can I migrate a table to a database in Laravel using terminal?

I am getting an error when I try to migrate a table from the migration directory to a database.
I want to migrate:
php artisan migrate:rollback --path=/database/migrations/2020_04_17_08144_create_car_production_dates_table.php
But I got this error.
Illuminate\Contracts\Filesystem\FileNotFoundException
File does not exist at path C:\Users\Yared Sisay\OneDrive\Desktop\Laravel\ProjectOne//database/migrations/2020_04_17_08144_create_car_production_dates_table.php.
What about path without /?
php artisan migrate --path=database/migrations/2020_04_17_08144_create_car_production_dates_table.php

How do I migrate:refresh a specific table in my database?

I want to migrate:refresh a specific table called scores. I tried this:
php artisan migrate:refresh --path=/database/migrations/scores
but it says nothing to migrate.
You cannot refresh a single migration if its not the last one, but you can step back in the migrations chain.
Assuming that you have five migrations and your table is at fourth place you can do like this:
php artisan migrate:refresh --step=2
With this command you refresh the last two migrations.
Note that each migration file name contains a timestamp which allows Laravel to determine the order of the migrations.
You can use the --path argument but it should be a directory in wich the command searches for migrations not a single migration file.
If you run:
php artisan help migrate:refresh
You can see all the parameters accepted.
yes, you can do this by using Specify the path to the migrations.
Follow these steps:
first of all to create a migration, use the make:migration command:
php artisan make:migration create_scores1_table
php artisan make:migration create_scores2_table
php artisan make:migration create_scores3_table
The new migration will be placed in your database/migrations directory. Each migration file name contains a timestamp like this:
2019_09_04_045427_create_scores1_table.php
2019_09_04_045500_create_scores2_table.php
2019_09_04_045518_create_scores3_table.php
Now, you want to refresh a specific table(for example: scores2 table), so you can be used like this:
php artisan migrate:refresh --path=database/migrations/2019_09_04_045500_create_scores2_table.php
It only refresh the scores2 table and not all the rest of the table
Yes you can migrate:refresh selected migrations. You left off the .php extension from your line of code.
It should look like this example
php artisan migrate:refresh --path=/database/migrations/2020_09_28_224702_create_addresses_table.php
So, if scores is your migration file name, add .php
php artisan migrate:refresh --path=/database/migrations/scores

Refresh laravel migration for specific table

Can I run php artisan migrate:refresh for specific table?
Or can I refresh specific table migration in general?
I tried this:
php artisan migrate --path=/database/migrations/selected/
But it's not working!
For Specific File run this command:
php artisan migrate:refresh --path="database\migrations\Your_Migration_File_Name_table.php"
Here --file= is for location of your file and migrate:refresh will empty your table data
If you want to empty all table's data from database then run
php artisan migrate:refresh command.
This works for me:
The --table and --create options may also be used to indicate the name of the table and whether the migration will be creating a new table. These options pre-fill the generated migration stub file with the specified table
php artisan make:migration create_users_table --create=users
php artisan make:migration add_votes_to_users_table --table=user
Source: https://laravel.com/docs/5.6/migrations

Laravel Migrate Specific File(s) from Migrations

Hi read all the included documentation here in https://laravel.com/docs/5.4/migrations.
Is there a way on how to migrate a certain migration file (1 migration only), cause right now every time there is a change I use php artisan migrate:refresh and all fields are getting reset.
First you should create one migration file for your table like:
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->string('fname',255);
$table->string('lname',255);
$table->rememberToken();
$table->timestamps();
});
}
After create test folder in migrations folder then newly created migration moved/copied in test folder and run below command in your terminal/cmd like:
php artisan migrate --path=/database/migrations/test/
you should add the path to your migration file to refresh just this table and run
php artisan migrate:refresh --path=/database/migrations/fileName.php
Just look at the migrations table in your database, there will be a list of migration file name and batch number value.
Suppose you have following structure,
id migration batch
1 2014_10_12_000000_create_users_table 1
2 2014_10_12_100000_create_password_resets_table 1
3 2016_09_07_103432_create_tabel_roles 1
If you want to just rollback 2016_09_07_103432_create_tabel_roles migration,
change it's migration batch value to 2 which is highest among all and then just execute following.
php artisan migrate:rollback
Here only table with batch value 2 will be rolled back. Now, make changes to that table and run following console command.
php artisan migrate
Batch value in the migrations table defines order of the migrations. when you rollback, migrations that are latest or have highest batch value are rolled back at first and then others. So, you can change the value in database and then rollback a particular migration file.
Although it's not a good idea to change batch number every time because of relationship among the table structure, we can use this case for some cases where single table rollback doesn't violates the integrity among the tables.
Hope you understand.
if you use tab for autocomplete
php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'
php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php
Note :
after --path no / before
You can run command like this
php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php
You need to put the file(s) into a new directory (ex:selected) and then apply
php artisan migrate --path=/database/migrations/selected
if you need rollback:
php artisan migrate:rollback --path=/database/migrations/selected
Note:
php artisan migrate:refresh
this will rollback and then migrate all the migrations files in the default directory (/database/migrations)
For Specific File run this command:
php artisan migrate:refresh --path="database/migrations/Your_Migration_File_Name_table.php"
Here --file= is for location of your file and migrate:refresh will empty your table data
If you want to empty all table's data from database then run
php artisan migrate:refresh command.
php artisan help migrate
You will see the option:
--path[=PATH] The path to the migrations files to be executed
By the way, you can probably indicate the root folder of the file that you want to migrate:
php artisan migrate --path=/database/migrations/sample.php
Or, You can create a new folder in migrations, then migrate all the migration files you want inside it:
php artisan migrate --path=/database/migrations/new_folder
You can only run this command in your terminal
php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php
After migrations you should put the particular file name. or if you have any folder inside migration then just add that folder name after the migration.
Like this
php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php
I hope this will help you a lil bit. Happy Coding.
Just use the --path flag. You don't need to use rollback, refresh, or any other command.
Example:
php artisan migrate --path=/database/migrations/migration_file_name.php
Get the actual file name and path of the migration and run the command like below
php artisan migrate --path=/database/migrations/2021_10_03_071450_create_reset_codes_table.php
If you want to create one and specific table. You can use this code. It works for laravel(5.x) versions.
php artisan migrate:refresh --path=/database/migrations/fileName.php
Just wanted to post another solution, which i think is worth mentioning.
Find row with your migration name in migrations table and DELETE it.
It should look like this: 2016_06_01_000001_create_oauth_auth_codes_table
Remove your table from database e.g. DROP TABLE oauth_auth_codes
Run php artisan migrate
It will migrate only the table you need, and won't touch anything else
Correction- remove slash before the database
$ php artisan migrate --path=database/migrations/migration.php
php artisan migrate --path=/database/migrations/fileName.php
You don't have to refresh for migration, because refresh means : Rollback all migrations and run them all again.
You can only rollback:
php artisan migrate:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
You can specify how many migrations to roll back to using the 'step' option:
php artisan migrate:rollback --step=1
Some tricks are available here:
Rollback one specific migration in Laravel
Delete the table and remove its record from migration table.
After that you just run migration again:
php artisan migrate
Specific Table Migration
php artisan migrate --path=/database/migrations/fileName.php
Or you can simply delete migration file name from your database, in "migrations" table and then run : php artitsan migration
If you want to create another table, just create a new migration file. It'll will work.
If you create a migration named users_table with id, first_name, last_name. You can create a migration file like
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name',255);
$table->string('last_name',255);
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
If you want to add another field like "status" without migrate:refresh. You can create another migration file like "add_status_filed_to_users_table"
public function up()
{
Schema::table('users', function($table) {
$table->integer('status');
});
}
And don't forget to add the rollback option:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('status');
});
}
And when you run the migration with php artisan migration, just migrate the new migration file.
But if you add field "status" into the first migration file (users_table) and run migration. It's nothing to migrate. You need to run php artisan migrate:refresh.
Hope this help.
Use: --path=database/migrations/your_migration_file_name.php
Examples:
php artisan migrate:refresh --path=database/migrations/your_migration_file_name.php
php artisan migrate:rollback --path=database/migrations/your_migration_file_name.php
php artisan migrate --path=database/migrations/your_migration_file_name.php
References: Genarate laravel migration
You could try to use the --path= option to define the specific sub-folder you're wanting to execute and place specific migrations in there.
Alternatively you would need to remove reference and tables from the DB and migrations tables which isn't ideal :/
install this package
https://github.com/nilpahar/custom-migration/
and run this command.
php artisan migrate:custom -f migration_name
php artisan migrate --path=/database/migrations/fileName.php
Just follow the instruction execute this commant file name here should be your migration table name
Example:
php artisan migrate --path=/database/migrations/2020_02_21_101937_create_jobs_table.php
You can use:
php artisan migrate:refresh --path=/database/migrations/<migration table here>
You can use this.
-> https://packagist.org/packages/sayeed/custom-migrate
-> https://github.com/nilpahar/custom-migration/
this is very easy to use
you can also migrate again migrated table but first you need to go in database migration table and delete row that specific migration name.
and then hit php artisan migrate
First you should to make the following commands:
Step 1:
php artisan migrate:rollback
Step 2:
php artisan migrate
Your table will be back in database .

Laravel migration undefined index

I am using Laravel 5.3.I deleted one of my migration files name 'feature' and everything related to it very carefully like its id from other tables etc.then i manually deleted the table from database.But now while i'm running the command "php artisan migrate:refresh".It's showing error exception with 'undefined index:***_create_features_table'.And when I'm running just 'php artisan migrate'.it shows that it was successful and all the tables successfully appear in the database.but then when i run migrate:refresh all the table disappears.what should i do to completely delete the migration file?
Try this.
First Manually delete the migration file under app/database/migrations/my_migration_file_name.php
Reset the composer autoload files: composer dump-autoload
Modify your database: Remove the last entry from the migrations table
Here is what I did.I cleared all the data from the database including all tables and then ran 'php artisan migrate'..that is how i made it work..But i am looking for a better solution which will not need to delete everything from the database.
Try check that you have the correct migrations first
php artisan migrate:status
Then you can try something like
php artisan migrate:refresh --step=1
And check again the status.
If you have Undefined index error and your migration was made with --path option, then add to your ModuleServiceProvier boot() method:
$this->loadMigrationsFrom(base_path('database/migrations/directory-name'));
in the migration just add $table->index(['column Name 1',''column Name 1']);
With my case, I forgot to do the Laravel migrate before running Infyomlabs to create scaffold!
So one of the reasons for "Undefined index" is that the table is not there yet.

Resources