【问题标题】:Can't migrate in laravel无法在 laravel 中迁移
【发布时间】:2015-11-11 18:46:23
【问题描述】:

我使用 MAMP 在 laravel 中做了一个小项目,一切正常。

现在我想把这个项目放到网上。 我用 FTP 复制了项目并更改了 database.php 文件。

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'private.be.mysql'),
        'database'  => env('DB_DATABASE', 'private_be'),
        'username'  => env('DB_USERNAME', 'private_be'),
        'password'  => env('DB_PASSWORD', 'private'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

访问网站时安装正常,但访问使用数据库连接的页面时出现以下错误。

SQLSTATE[42S02]: Base table or view not found: 
1146 Table 'private_be.users' doesn't exist (SQL: select * from `users`)

所以我发现我忘了迁移我的项目。但是当输入命令“php artisan migrate”时,我在终端中收到以下错误。

[ErrorException]                                                             
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename   
nor servname provided, or not known 

起初我以为我对“mysql”的设置可能不正确,但我敢肯定。

我的 .env 文件如下所示

APP_ENV=local
APP_DEBUG=true
APP_KEY=***

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

谁能帮我解决迁移错误?

【问题讨论】:

  • 您是否应该为DB_HOSTDB_DATABASE 等提供env 变量?现在,您的 mysql 服务器位于 private.be.mysql,这是默认提供的。
  • 不,我删除了 DB_HOST, ... env 中的变量,所以我确定它是使用 database.php 连接的。
  • 好的,没关系,我只是在检查以确保您确实想要使用这些设置。对我来说,它似乎在private.be.mysql 上找不到 mysql,但除此之外,我不确定......

标签: php mysql laravel migrate


【解决方案1】:

听起来您没有运行数据库迁移。

在你移动文件之后,你是否通过 SSH 连接到服务器并进入你的项目目录并运行命令

php 工匠迁移

运行上述命令将创建您为其创建迁移的所有数据库表。如果您已经有一些数据需要先回滚然后重建,您可以使用:

php 工匠迁移:刷新

【讨论】:

  • 我正在本地对项目执行“php artisan migrate”命令。这可能是我的问题吗?
  • 您需要在运行站点的服务器上运行迁移命令。抱歉,蒂姆,我确实看到他运行了命令,这就是为什么我检查他是否通过 SSH 连接到服务器并且还包括有关运行刷新的内容。没必要粗鲁。
  • 这很公平。我的错。有点假设他在正确的服务器上运行该命令...
  • 通过 SSH 连接到服务器后,我能够执行迁移命令。谢谢!
猜你喜欢
  • 2018-04-23
  • 2016-10-23
  • 2018-04-24
  • 2020-02-27
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 2018-08-01
  • 2019-11-06
相关资源
最近更新 更多