由于我是 Laravel 新手,因此我遇到了迁移问题。我已经尝试了这里描述的所有内容,但没有成功
Posted
技术标签:
【中文标题】由于我是 Laravel 新手,因此我遇到了迁移问题。我已经尝试了这里描述的所有内容,但没有成功【英文标题】:I have a problem with migration as I am new to Laravel. I have tried everything described on here with no success 【发布时间】:2019-05-30 04:55:02 【问题描述】:我是 Laravel 的新手。我在我的 MacOS Mojave 上安装了 MAMP 和 Xampp 7.3.0,但目前在端口 80 上使用 Xampp,mysql 端口重新配置为 33060,因为 phpmyadmin 无法正常工作。 “php artisan migrate”有问题,因为每次尝试迁移时都会显示以下错误:
SQLSTATE[HY000] [2002] 没有这样的文件或目录(SQL:
select * from information_schema.tables where table_schema = land
on_app and table_name = migrations
)
我尝试在线搜索,采用了贡献者建议的解决方案,但似乎没有一个适合我。我曾尝试安装 MySQL 8.0.13,但遇到了caching_sha2_password 提示我卸载它并安装 MySQL5.7 并显示版本消息“mysql Ver 14.14 Distrib 5.7.24, for osx10.14 (x86_64) using EditLine 包装器" 但是,我决定将文件夹复制到 httdoc 并重新配置我的 .env。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=33060
DB_DATABASE=landon_app
DB_USERNAME=root
DB_PASSWORD=
数据库.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '33060'),
'database' => env('DB_DATABASE', 'landon_app'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
应用服务提供者
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; //This must be added
class AppServiceProvider extends ServiceProvider
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
//
Schema::defaultStringLength(191); //This must be added to allow connection to the database
/**
* Register any application services.
*
* @return void
*/
public function register()
//
我每次尝试迁移时收到的错误:
【问题讨论】:
在 laravel 5.8 上遇到同样的问题SQLSTATE[HY000] [2002] Connection timed out (SQL: select * from information_schema.tables where table_schema = ekm-parcel2G and table_name = migrations)
【参考方案1】:
只需在您的 .env
文件中更改这一行:
DB_HOST=localhost
到
DB_HOST=127.0.0.1
【讨论】:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“)”附近使用正确的语法(SQL:alter tablereservations
dd 约束reservations_client_id_foreign
外键(client_id
)引用clients
( ))
所以,这意味着现在您的连接正常。但是,当您尝试更新您的预订表时,您遇到了另一个错误。
我需要你的迁移文件来解决这个问题。最好你可以搜索***。关于这个问题有很多解决方案。
谢谢我已经修好了。我犯了一个错误,而不是“ $table->foreign('client_id')->references('id')->on('clients');” ,我写了“$table->foreign('client_id')->reference('id')->on('clients');”【参考方案2】:
从几个简单的调试步骤开始: - 您可以使用提供的凭据访问您的 mysql 服务器吗? - 你能验证你的服务器上是否存在名为“landon_app”的数据库吗? - 您也可以尝试将主机从 localhost 更改为 127.0.0.1
【讨论】:
【参考方案3】:Laravel 4:将 app/config/database.php 文件中的“host”从“localhost”更改为“127.0.0.1”
Laravel 5:将 .env 文件中的“DB_HOST”从“localhost”更改为“127.0.0.1”
【讨论】:
以上是关于由于我是 Laravel 新手,因此我遇到了迁移问题。我已经尝试了这里描述的所有内容,但没有成功的主要内容,如果未能解决你的问题,请参考以下文章