【问题标题】:laravel [1049] Unknown databaselaravel [1049] 未知数据库
【发布时间】:2021-04-28 08:50:15
【问题描述】:

我是 laravel 的新手,当我尝试通过控制器查看我的数据库时,我目前遇到了问题。当我尝试使用控制器查看数据时,出现以下错误。

“SQLSTATE[HY000] [1049] 未知数据库'laravel'”。

如果我使用 artisan tinker,我可以执行 ::all() 并查看我的数据,我也成功地迁移了我的数据。它只是出于某种原因似乎不喜欢我的观点。

我查看了其他类似的建议运行的答案

php artisan cache:clear

然而这对我没有任何作用。

控制器:

class authorsController extends Controller
{

    public function index(){
        $authorList = \App\Author::all();
        //return $authors;
        return view('library.authors');
    }
}

.env 文件内部

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=library
DB_USERNAME=root
DB_PASSWORD=

【问题讨论】:

  • 请运行php artisan tinker 并执行config('database')。检查它是否选择了正确的值 - 特别是 default 值和 mysql.database 值。
  • 检查config/database.php 中的值。如果您拥有(并且正在使用)多个connections,则其中一个可能未配置为使用library 作为您的database。检查env('...', 'laravel');;某些东西可能正在使用默认值而不是 DB_DATABASE
  • @ceejayoz 我查看了config('database'),它表明它们都是正确的数据库。
  • @PaulCarlson 如果您确定这一点,请检查app/Author.php 中没有设置$connection 值。
  • @TimLewis 我看了config/database.php,它看起来不错。我什至搜索了“laravel”,但在 cmets 之外没有找到任何东西。我还查看了我的 .env 文件,使用正确的数据库名称再次看起来不错。

标签: mysql laravel


【解决方案1】:

如果您使用 php artisan serve 运行 Laravel,则在您停止并重新启动服务器之前,它不会接收到 .env 更改。

您可能在服务器启动时将“laravel”设置为您的数据库名称。杀死它,然后再次运行该命令。

【讨论】:

  • 就是这样。进行更改后,我没有考虑重新启动服务器。感谢您的明确回答。
【解决方案2】:

试试这个命令列表

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache

将此代码放入您的路线web.php 并在浏览器中运行后,这将告诉您数据库是否已连接。

Route::get('/testConnection', function () {
try {
      DB::connection()->getPdo();
      if(DB::connection()->getDatabaseName()){
          echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
          die;
      }else{
          die("Could not find the database. Please check your configuration.");
      }
  } catch (\Exception $e) {
      die($e->GetMessage());
  }
});

希望这会对你有所帮助。

【讨论】:

  • 感谢您的建议,但是它仍然说我使用了错误的数据库。它仍然给我“SQLSTATE [HY000] [1049] 未知数据库'laravel”。你知道db信息走的路线吗?例如,我知道我在.env 中声明它,然后在config.database.php 中读取。中间或之后是否有我失踪的步骤?
  • @Paul Carlson 我的建议是创建名称为laravel 的新数据库并检查错误是否消失。
【解决方案3】:

我仍然不确定为什么,但我确实找到了适合我的修复程序。在config.database.php 内部,我将'database' => env('DB_DATABASE', 'forge') 更改为'database' => env('library', 'library')。我觉得我不应该改变这些,但是出于什么原因纠正了这个问题。

这让我认为它与.env 文件有关,但不确定。我将不得不开始一个新项目来验证它在我的系统上是否存在异常。

【讨论】:

  • 这太奇怪了。但是除非你在你的.env 文件library=library 中有一个条目,否则env('library', 'library'); 只是默认为library,所以你可以有效地输入'database' => library'。很高兴你让它工作了!
  • config/database.php 中的默认值实际上是指向 .env 中的值。像这样: 'database' => env('DB_DATABASE', 'forge') DB_DATABASE 是一个不应更改的键。它指的是 .env 中提到的键。方法 env() 用于从 .env 文件中检索值。在此处阅读有关 env() 的信息:laravel.com/docs/5.8/helpers#method-env
【解决方案4】:

我尝试了 php artisan config:clear。我尝试了 php artisan 缓存:清除。我创建了数据库。我放弃了它并重新创建了几次。我什至尝试通过更改 .env 中的 DB_DATABASE 值来使用现有数据库,我可以通过 CLI 连接到新的和现有的数据库。我在 php -m 中看到了驱动程序。因此,要在 Windows 10 上解决此问题,请将 .env 中的 DB_HOST=127.0.0.1 更改为 DB_HOST=localhost 并再次清除配置/缓存。工作。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2021-01-25
    • 2020-10-21
    • 2016-02-14
    • 2014-07-29
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多