2017-03-08 137 views
1

此問題已解決。檢查我的帖子下面PHP Artisan遷移失敗

我剛剛安裝了一個新的Laravel 5.4項目。

,因爲我從頭教程中,我得到以下錯誤以下傑弗里路的Laravel當我要遷移我的數據庫:

[Illuminate\Database\QueryException] 
    SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already 
    exists (SQL: create table `users` (`id` int unsigned not null auto_increment pr 
    imary key, `name` varchar(255) not null, `email` varchar(255) not null, `passwo 
    rd` varchar(255) not null, `remember_token` varchar(100) null, `created_at` tim 
    estamp null, `updated_at` timestamp null) default character set utf8mb4 collate 
    utf8mb4_unicode_ci) 

-

[PDOException] 
    SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already 
    exists 

就像我說的,這是一個新鮮的安裝,我不知道如何解決這個問題。你們有人知道嗎?

在此先感謝!

@ian,

我跟着你給我的指示,但現在我得到這個錯誤:

[Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l 
    ong; max key length is 767 bytes (SQL: alter table `users` add unique `users_em 
    ail_unique`(`email`)) 

-

[PDOException] 
    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l 
    ong; max key length is 767 bytes 

如何來解決這個問題:

我是這麼做的,感謝伊恩:

  1. 刪除數據庫,並創建新的數據庫憑據
  2. 轉到一個新的
  3. 更新ENV文件APP->提供者 - > AppServiceProvider.php
  4. 添加Schema::defaultStringLength(191);到開機功能
  5. 確保在文件頂部添加use Illuminate\Support\Facades\Schema;
  6. 遷移數據庫,問題解決!
+1

刪除並重新創建數據庫,在數據庫中的表已經存在的錯誤狀態。 – Ian

+0

查看我編輯過的帖子 – itvba

+0

你到底做了什麼,我沒有看到最後這個版本有什麼區別? – Ian

回答

1

您遇到的關於密鑰長度的第二個錯誤是Laravel 5.4中的新變化。當使用utf8mb4編碼時,varchar字段最多隻能爲194.

您需要進入遷移過程,更改每次出現字符串()的大小並添加一個長度。或者,您可以將數據庫編碼更改回UTF8,但utf8mb4允許使用存儲emojis。

您可以參考https://laravel-news.com/laravel-5-4-key-too-long-error瞭解更多信息

+0

謝謝伊恩,這解決了這個問題。我用解決方案修改了我的帖子。 – itvba

0

在做php artisan migrate遷移數據庫不能有相同的表名狀(除非你在一個表中增加只是另一場)

您必須刪除所有的表(下降)和然後再次運行php artisan migrate