Mysql laravel[1049]未知数据库
我是laravel的新手,目前在尝试通过控制器查看数据库时遇到问题。当我试图使用控制器查看我的数据时,我得到以下错误 “SQLSTATE[HY000][1049]未知数据库'laravel'” 如果我使用artisan tinker,我可以执行::all()并查看我的数据,我还成功地将我的数据迁移了。只是出于某种原因,它似乎不喜欢我的观点 我看过其他类似的答案,这些答案建议我参加竞选 php artisan缓存:清除 然而,这对我没有任何帮助 控制器:Mysql laravel[1049]未知数据库,mysql,laravel,Mysql,Laravel,我是laravel的新手,目前在尝试通过控制器查看数据库时遇到问题。当我试图使用控制器查看我的数据时,我得到以下错误 “SQLSTATE[HY000][1049]未知数据库'laravel'” 如果我使用artisan tinker,我可以执行::all()并查看我的数据,我还成功地将我的数据迁移了。只是出于某种原因,它似乎不喜欢我的观点 我看过其他类似的答案,这些答案建议我参加竞选 php artisan缓存:清除 然而,这对我没有任何帮助 控制器: class authorsControll
class authorsController extends Controller
{
public function index(){
$authorList = \App\Author::all();
//return $authors;
return view('library.authors');
}
}
Inside.env文件
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=library
DB_USERNAME=root
DB_PASSWORD=
请尝试以下命令列表
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());
}
});
希望这能对您有所帮助。我不确定为什么仍然如此,但我确实找到了一个适合我的解决方案。在
config.database.php
中,我将'database'=>env('DB_database','forge')
更改为'database'=>env('library','library')
。我觉得我不应该改变这些,但无论出于什么原因,我纠正了这个问题
这让我觉得它与
.env
文件有关,但不确定。我将不得不启动一个新项目,以验证我的系统上是否存在异常情况。如果您使用php artisan serve运行Laravel
,则在停止并重新启动服务器之前,它不会进行.env
更改
服务器启动时,可能已将“laravel”设置为数据库名称。杀死它,然后再次运行该命令。我尝试了php artisan config:clear。我尝试了php artisan缓存:清除。我创建了数据库。我扔掉了它,重新创建了几次。我甚至尝试通过更改.env中的DB_数据库值来使用现有数据库。我可以通过CLI连接到新数据库和现有数据库。我看到了php-m中的驱动程序。因此,要在Windows 10上解决这个问题,需要在.env中将DB_HOST=127.0.0.1更改为DB_HOST=localhost,并再次清除config/cache。工作。请运行
php artisan tinker
并执行config('database')
。检查它是否选择了正确的值-特别是默认值和mysql.database
one。检查config/database.php
中的值。如果您有(并且正在使用)多个连接
,其中一个可能未配置为将库
用作数据库
。检查env(“…”,“laravel”)代码>;有些东西可能使用默认值而不是DB_DATABASE
@ceejayoz我查看了config('DATABASE')
,它表明它们都是正确的数据库。@PaulCarlson如果你确定的话,然后检查app/Author.php
中是否没有设置$connection
值。@Timleis我查看了config/database.php
,它看起来不错。我甚至搜索了“拉威尔”,结果除了评论外什么也没找到。我还查看了我的.env文件,使用正确的数据库名称看起来也不错。谢谢你的建议,但是它仍然说我使用了错误的数据库。它仍然给我“SQLSTATE[HY000][1049]未知数据库'laravel”。你知道数据库信息的路线吗?例如,我知道我在.env
中声明了它,然后在config.database.php
中读取它。保罗·卡尔森我的建议是创建一个名为laravel
的新数据库,并检查错误是否消失。这太奇怪了。但除非您的.env
文件library=library
,env('library','library')中有条目
只是默认为库
,因此您可以有效地将“数据库”=>库
。很高兴你能让它工作!config/database.php中的默认值实际上指向.env中的值。像这样:'database'=>env('DB_database','forge')DB_database是一个不应该更改的键。它引用.env中提到的键。方法env()用于从.env文件中检索值。阅读这里的env():就是这样。我没有想到在我做了更改后重新启动服务器。谢谢你显而易见的回答。