Laravel 5生产模式下数据库用户名未更改

时间:2017-04-19 20:35:26

标签: php mysql laravel-5.3

我在Homestead用Laravel 5.3编写代码,一切都很好。 当我将代码上传到生产服务器并创建新的数据库用户名时,

并且GRANT grant all on drns.* to drns@localhost identified by 'drns****';

将.env更改为

APP_ENV=production
APP_KEY=base64:695XOiuHsxXXXXXXXXXXXLOX9gBE74=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://myip/

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=drns
DB_USERNAME=drns
DB_PASSWORD=drns****

运行工匠php artisan route:cache && php artisan config:cache && php artisan view:clear

然后我测试我的网站,控制器中的每个功能[创建/更新]它通常工作, 但是在Document controler上的函数更新中说出了关于宅基地用户名的错误

QueryException in Connection.php line 770:
SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('homestead'@'%') does not exist 
(SQL: update `documents` set `revision` = `revision` + 1, `number` = 0001.13 / 1, `title` = test, `urgency` = normal, `updated_at` = 2017-04-20 02:41:54 where `id` = 68)

我的代码

public function update(DocumentRequest $request, $id)
{
    $document =  Document::findOrFail($id);

    if ($document->increment('revision', 1, [
        'number' => $request->get('number'),
        'title' => $request->get('title'),
        'urgency' => $request->get('urgency')]))
    {

        return redirect()->route('document.show', $id);
    }

    return redirect()->back()->with('error', 'Can't update!');
}

更新功能中的另一个控制器就像这些,但它没有任何错误。

请建议我。

1 个答案:

答案 0 :(得分:1)

来自laracast的@Mittensoff帮助我找到了解决方案,

我在数据库[homestead]中创建触发器并将数据库转储到服务器,定义器为homestead@%它没有更改。因此,我将definer更改为数据库服务器上的用户名,然后正常工作。