我收到 Laravel Mysql 连接错误

Posted

技术标签:

【中文标题】我收到 Laravel Mysql 连接错误【英文标题】:I am getting Laravel Mysql Connection Error 【发布时间】:2021-01-10 15:37:16 【问题描述】:

当我想 php artisan migrate 时出现此错误。错误信息如下

   Illuminate\Database\QueryException

SQLSTATE[42S01]:基表或视图已存在:1050 表 'users' 已经存在 (SQL: create table users (id bigint unsigned not null auto_increment 主键,name varchar(255) 不是 空,email varchar(255) 不空,email_verified_at 时间戳 空,password varchar(255) 不空,remember_tokenvarchar(100) 空,created_at 时间戳空,updated_at 时间戳空) 默认字符集 utf8mb4 collat​​e 'utf8mb4_unicode_ci')

在 C:\composer\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:671 667▕ // 如果尝试运行查询时发生异常,我们将格式化错误 668▕ // 包含与 SQL 的绑定的消息,这将使该异常成为 669▕ // 对开发人员更有帮助,而不仅仅是数据库的错误。 670▕ catch (Exception $e) ➜ 671▕ throw new QueryException( 672▕ $查询,$this->prepareBindings($bindings),$e 673▕); 674▕ 675▕

1 C:\composer\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:464 PDOException::("SQLSTATE[42S01]: 基表或视图已存在:1050 表 'users' 已存在")

2 C:\composer\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:464 PDOStatement::execute()

和数据库设置如下。 Database.php文件中的设置如下

 'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

.env文件中的设置如下

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:sBKduFaKhOJdg7/A1U4IzAUnj3yLLcjngjmMvEoWl94=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

注意:我使用 mysql 作为 wampserver。

【问题讨论】:

Welcome to SO .. 1050 Table 'users' already exists" 你能看到错误吗users 已经退出所以无法再次创建,或者你可以尝试php artisan migrate:fresh 我已经尝试过了,没有任何改变。一直报错 手动删除用户表 php artisan db:wipe(它会从 db 中删除所有表),然后 php artisan migrate 【参考方案1】:

也许下面的命令会有所帮助!

php artisan migrate:fresh

迁移命令及其用途

  migrate:fresh        Drop all tables and re-run all migrations
  migrate:install      Create the migration repository
  migrate:refresh      Reset and re-run all migrations
  migrate:reset        Rollback all database migrations
  migrate:rollback     Rollback the last database migration
  migrate:status       Show the status of each migratioin

【讨论】:

您能否扩展您的答案以包含此命令的作用?【参考方案2】:

以下是我为解决相同问题所采取的步骤:

    在我写的控制台中 => php artisan tinker

    然后在控制台中再次 => Schema::drop('users')

    最后 => php artisan 迁移

【讨论】:

当它按照你说的做时,它会给出这个错误。 SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 1000 字节(SQL:alter table users add unique users_email_unique(email)) 更新您的/app/Providers/AppServiceProvider.php 以包含:use Illuminate\Support\Facades\Schema; /** * 引导任何应用程序服务。 * * @return void */ public function boot() Schema::defaultStringLength(191); 【参考方案3】:

移除已经迁移的文件,然后执行迁移命令

【讨论】:

以上是关于我收到 Laravel Mysql 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 项目中收到“SQLSTATE [HY000] [2002] 连接被拒绝错误”

eclipse中的MySql(MAMP)jdbc连接错误

错误连接山魈(Laravel)

Laravel websockets 无法在推送器中连接

PHP Laravel:无法建立连接,因为目标计算机主动拒绝它

docker compose MySQL 容器 [2002] 连接被拒绝