我是Laravel
的新手,我正在关注Laravel Documentations
以及一些教程视频。但是,我在我当地的php artisan migrate
运行这个CMD prompt
代码,它不是在Database Table
创建phpmyadmin
。在stackoverflow
中还有其他几个与此相关的类似主题,但没有一个解决了我的问题。请不要标记此副本。
好的,就是这样。我运行这段代码
php artisan make:migration create_student_table --create=student
并在迁移文件夹中创建新文件2016_04_08_061507_create_student_table.php
然后在那个文件中我运行这个code
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('student', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('name', 20);
$table->string('email', 255);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('student');
}
}
然后在cmd
我运行php artisan migrate
但它没有创建student
表。相反,它显示此消息
[PDOException] SQLSTATE [42S01]:基表或视图已存在:1050表'用户'已存在
几天前我用类似的方法创建了users
表。但是没有创建新的student
表。我在这里错过了什么吗?提前致谢。
这意味着Laravel首先尝试运行users
表迁移。如果您正在开发中并且不需要保留数据,则可以删除users
表,然后运行php artisan migrate
编辑
在运行新的迁移文件之前,已经从database \ migrations文件夹中移出了迁移。在运行新迁移之后,回溯过去之前的迁移。
这意味着您已经运行过一次php artisan migrate
,并且该表已存在于数据库中。如果工匠撒谎,有时你需要做一个composer dump-autoload
。
所以你需要在编辑和运行php artisan migrate
之前回滚最后一个更改。要回滚你可以使用php artisan migrate:rollback
此外,如果您想删除所有更改,您可以运行php artisan migrate:reset
。
有php artisan migrate --force
强制进行迁移。
完成所有这些步骤后,如果无法运行迁移,如果是开发环境,请再次删除数据库create database并运行php artisan migrate
。
我的Laravel设置(mac os Sierra 10.12.16)和使用MAMP与原子一直存在类似问题,直到我按照下一步操作才找到确定的解决方案。
在设置我的本地环境时,我发现使用以下步骤可以防止以后的迁移问题,
IN AppServiceProvider.php add the following code:
use Illuminate\Support\Facades\Schema;
public function boot()
{
//
Schema::defaultStringLength(191);
}
then in database.php:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
THEN FINALLY IN .env:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE=hackable
DB_USERNAME=root
DB_PASSWORD=root
希望这有助于某人,因为我花了几天时间才最终得到正确的设置:)
你的数据库已经有了这个表,只需删除它,然后让工匠创建laravel。
你有用户迁移吗?如果是这样,请在以下位置插入用户创建表:
if(!Schema::hasTable('users')) ...
有时,如果您使用的是MAMP服务器,则可能会因数据库连接而出现此错误。这是因为端口号,通常在使用MAMP时,mysql数据库的端口号是8889,您必须在配置中更改并运行您的artisan命令,它肯定会起作用。
何必?
你可以使用php artisan migrate:fresh
这将忽略当前的用户表并从新的表重新创建表。
这对我有用:从数据库中删除所有表并运行
php artisan migrate.