由于我是 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 table reservations 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 新手,因此我遇到了迁移问题。我已经尝试了这里描述的所有内容,但没有成功的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:在迁移之前删除迁移:重置

为啥我收到 Laravel php artisan 迁移错误?

php工匠迁移。定义了多个主键

Laravel 5.4数据库迁移不起作用[重复]

如何在 Laravel 中制作迁移模型

Laravel 每次迁移多个表