Php Laravel PDO异常SQLSTATE[HY000][1049]未知数据库';锻造&x27;
我正在使用Laravel连接MySQL数据库 我得到了一个例外:Php Laravel PDO异常SQLSTATE[HY000][1049]未知数据库';锻造&x27;,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我正在使用Laravel连接MySQL数据库 我得到了一个例外: PDOException SQLSTATE[HY000] [1049] Unknown database 'forge' 这是我的config.database.php 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' =>
PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'
这是我的config.database.php
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'Anastasie',
'password' => 'A@Laurent',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
为什么引用PDO
数据库时出错?为什么要使用forge
数据库名称?我已经改了
我应该做些什么来告诉Laravel我正在使用MySQL数据库吗
更新1
我找到了这条线
protected$table='users'代码>
在我的user.php文件中,我将其更改为
protected$table='user'因为我的数据库中的表是user
而不是users
更新2
这是我在途中写的
Route::resource('users', 'UsersController');
我在controllers文件夹中添加了userscoontroller.php
在userscoontroller.php
中,我有一个:
class UsersController extends BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$users = User::all();
return View::make('users.index', compact('users'));
}
我把这个url称为http://localhost:8082/laravel/public/users/
我正在使用Windows7和Laravel4.2
提前感谢听起来您在某个地方有一个特定于环境的配置文件,可以覆盖默认的数据库设置。可能app/config/local/database.php您必须这样清除缓存(因为您的旧配置在缓存文件中):
pdo错误源于这样一个事实:Laravel使用pdo驱动程序连接到mysql,使用phpMyAdmin(或任何您喜欢的),我刚刚创建了一个名为“forge”的数据库,并重新运行了php artisan migrate
命令,并且一切正常。多次遇到这个问题,请注意,我是通过Vagrant运行Laravel的。以下是对我有效的修复方法:
- 再试几次(刷新页面)
- 重新装载流浪者(流浪者重新装载)
您可以尝试重新加载您的服务器,而不是vagrant(即MAMP)注意:一旦发生意外,我的数据库名称前面有一个空格,例如mydatabase
而不是mydatabase
,phpmyadmin将不会显示该空格,但是如果您从mysql的命令行界面运行它,例如mysql-u用户-p
然后show databases
,您将能够看到空间
首先,您必须创建相关数据库
然后:php artisan缓存:清除
现在运行php artisan迁移:安装
希望您的问题能得到解决。好的,找到解决方案
在database.php文件中,默认情况下是“mysql”部分:
您只需更改以下值:
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
通过您的数据库名称(如果您没有数据库名称,则必须创建一个)和该数据库用户名
像这样
'database' => env('DB_DATABASE', 'MyDatabase'),
'username' => env('DB_USERNAME', 'MyUsername'),
确保laravel文件夹中没有重复的.env
文件。如果存在,请将其删除。仅保留.env
文件 有时这是因为DB\u CONNECTION=mysql
并且您想要使用SQLite数据库。
解决这个问题的一个方法是使DB_CONNECTION=sqlite
。希望能有帮助
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\xampp\htdocs\jbtibl\database\database.sqlite
DB_USERNAME=root
DB_PASSWORD=
我也有同样的问题。。。
如果您已在.env文件中设置了DB名称和用户名并正确传递,但该文件仍不起作用,请在终端中运行blow代码:(这将清除以前应用程序留下的缓存)
然后再次运行命令php artisan serve
(如果正在运行,请停止并再次运行)您需要修改文件.env中的数据库名称(如果需要,请在.env.example中修改)
我通过这个小小的纠正解决了我的问题
停止服务器,然后运行php artisan cache:clear
李>
如果您使用过Homestead,请确保在下面的.env文件中输入数据库名称
DB_DATABASE=homestead
与homestad.yaml文件中的值相同
databases:
- homestead
我做了所有这些,但都没有成功,我发现应该停止php artisan Service(Ctrl+C)并再次启动php artisan Service。以下是我对问题中描述的问题的回答 在cmd中写入:
php artisan cache:clear
然后尝试在终端中执行此代码
php artisan serve
注:
这将再次启动服务器我已经有好几天这个问题了,结果是如果我在phpMyAdmin中创建了db,它就不会出现在Laravel中,
因此,我通过MySqlWorkbench创建了数据库,它工作了:)首先使用以下命令清除缓存
php artisan cache:clear
php artisan serve
然后使用此命令重新启动服务器
php artisan cache:clear
php artisan serve
清除缓存
php artisan缓存:清除,然后重新启动服务器php artisan serve
127.0.0.1:8000
我的应用程序名变量在.env.example
和.env
和APP.php
中带有空格,例如应用程序。通过”
和php artisan cache解决了这个问题:清除并通过env文件将新生成的app key设置为app_key变量,然后通过php artisan serve
重新启动服务器解决了这个问题在我的情况下,错误是由于端口号不正确造成的(错误肯定是由于不正确的凭据造成的,即主机/端口/数据库名/用户名/密码
)
解决方案:
右键单击WAMP托盘
在MySQL上点击(拖动光标)
查看MySQL使用的端口号
在您的Laravel配置中添加相同的配置:
.env
文件
config/database.php
清除缓存
php-artisan-config:cache
运行迁移
php artisan迁移
编写
php artisan config:cache
在您的终端中,它将是固定的检查WAMP中的端口(它位于phpMyAdmin的顶部)是否与.env
文件中的DB\u端口
匹配
.env
中我的DB\u端口是3306
。我的服务器端口
php artisan config:cache
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "myDbn2";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Database created successfully<br>";
$sql = 'create table if not exists fruits (id integer , name text , color text
, price float) ;';
$conn->exec($sql);
echo 'the table created successfully </br>';
$sql2 = 'insert into fruits values (1 , "apple", "red" , 23.2);';
$conn->exec($sql2);
echo 'insert was successfully';
} catch (PDOException $e) {
echo $e->getMessage();
}
$conn = null;
?>