我收到 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_verified_at
时间戳 空,password
varchar(255) 不空,remember_token
varchar(100) 空,created_at
时间戳空,updated_at
时间戳空) 默认字符集 utf8mb4 collate '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 tableusers
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] 连接被拒绝错误”