Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel PDO异常SQLSTATE[HY000][1049]未知数据库';锻造&x27;_Php_Mysql_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel PDO异常SQLSTATE[HY000][1049]未知数据库';锻造&x27;

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' =>

我正在使用Laravel连接MySQL数据库

我得到了一个例外:

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
  • 启动服务器,现在应该可以工作了
  • 在我的特殊情况下,我最终意识到我的phpMyAdmin正在使用端口3308,而Laravel正在尝试通过3306进行连接。因此,我的建议是确保您拥有正确的连接字符串

  • 停止服务器,然后运行php artisan缓存:清除
  • Change.env文件DB_PORT=3308(对于我来说是3308)

  • 如果您使用过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;
    
    
    ?>