首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有默认数据库的情况下可以使用Laravel 4吗

问在没有默认数据库的情况下可以使用Laravel 4吗
EN

Stack Overflow用户
提问于 2015-04-23 15:48:33
回答 3查看 5.1K关注 0票数 9

我正在创建一个应用程序,它从许多不同的数据库中读取信息,但实际上没有自己的数据库,因为在任何地方都没有正在编写的信息。

基本上,用户选择一个记录和一个类型,应用程序将根据他们的选择生成一个.pdf文件。我在app/config/database.php中定义了多个连接,但默认情况下我不想连接到它们中的任何一个。有没有办法告诉Laravel不要连接数据库?我尝试过一些东西(都是在app/config/database.php中的),首先是:

代码语言:javascript
复制
'default' => NULL,
// and 
//'default' => '',

两人都返回:

未定义索引:驱动程序

我也试过:

代码语言:javascript
复制
'default' => 'none',

'connections' => array(
    'none' => array(
        'driver' => '',
        'host' => '',
        ...
     ),
 ),

这反过来又返回:

不支持的驱动[] 不支持的host[] ..。

最后,设置'default' => '',返回:

数据库[]未配置。

我找到了使用Laravel模型的方法,没有数据库连接,但实际上没有Laravel本身。

编辑

将连接设置为现有的mysql连接,而不选择数据库“有效”:

代码语言:javascript
复制
'default' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => '',
    'username'  => '****',
    'password'  => '****',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

但我不确定这是不是正确的方法。这感觉像是一个解决方案,而不是一个实际的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2015-04-26 15:08:24

我要做以下几点:

代码语言:javascript
复制
'driver' => 'sqlite',

以及sqlite连接设置

代码语言:javascript
复制
'sqlite' => [
    'driver' => 'sqlite',
    'database' => ':memory:',
    'prefix' => '',
]

这样,它将使用一个内存数据库,当数据库连接关闭时,数据库将停止存在,而且由于您不会打开一个连接,所以您永远不会打开一个本地数据库。

还可以从app.php配置文件中删除数据库服务提供程序:

代码语言:javascript
复制
    'Illuminate\Cookie\CookieServiceProvider',
    //'Illuminate\Database\DatabaseServiceProvider',
    'Illuminate\Encryption\EncryptionServiceProvider',

在同一个文件中,正面流畅而又雄辩:

代码语言:javascript
复制
    'Crypt'     => 'Illuminate\Support\Facades\Crypt',
    //'DB'        => 'Illuminate\Support\Facades\DB',
    //'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
    'Event'     => 'Illuminate\Support\Facades\Event',

这将阻止您连接到本地数据库,甚至无法启动您刚刚设置的sqlite数据库连接。

票数 5
EN

Stack Overflow用户

发布于 2015-04-24 13:21:58

您需要在app/config/database.php文件中定义连接,并在使用laravel的DB:: connection ('connection_name')运行查询时指定连接。这里有更多信息-> http://laravel.com/docs/4.2/database#accessing-connections

票数 0
EN

Stack Overflow用户

发布于 2015-04-24 21:42:23

只需在数据库配置中将db驱动程序定义为“sqlite”即可。

代码语言:javascript
复制
'default' => 'sqlite',

只要您没有更改默认sqlite部分中的任何内容,所有这些都应该可以工作。您不一定要使用数据库,但它将减少您收到的那些错误。

如果您由于任何原因更改了默认sqlite,您可以按照以下步骤配置sqlite。

代码语言:javascript
复制
'sqlite' => array(
    'driver'   => 'sqlite',
    'database' => __DIR__.'/../database/production.sqlite',
    'prefix'   => '',
),

此外,如果这个'production.sqlite‘文件还没有存在,请确保它存在。您可以通过命令行轻松地做到这一点:

代码语言:javascript
复制
touch app/database/production.sqlite
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29828429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档