首页 > 解决方案 > Codeigniter $this->db->field_data 跨多个模式获取字段的问题

问题描述

我正在 Code-igniter 中连接到 PostgreSQL 数据库,并尝试使用该$this->db->field_list()方法访问我的表的字段名称。问题是它似乎正在查看所有模式并从不同模式中具有相同名称的多个表中提取字段。结果是两个表中唯一字段的列表,这不是我想要的。

我怀疑该field_list()方法在幕后是这样做的:

SELECT ... FROM information_schema.COLUMNS WHERE table_name = 'my_table'

但不幸的是,我有my_table多个模式。

我需要它做:

SELECT ... FROM information_schema.COLUMNS WHERE table_name = 'my_table' AND table_schema = 'my_schema_1'

我可以直接查询信息架构并获得此功能的等效项,但我只是对为什么它无法识别我的数据库配置文件中定义的架构感到困惑:

$db['default'] = array(
    'dsn' => 'pgsql:host=my_host_name;port=5432;dbname=mydb;',
    'hostname' => '',
    'username' => 'user',
    'password' => 'password',
    'database' => 'mydb',
    'schema'   => 'my_schema_1',
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => TRUE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我需要在 DSN 中定义架构还是我在这里做错了什么?

我尝试在网上寻找替代的 DSN 字符串以供使用,但我没有看到可以为 pgSQL 定义模式的字符串。

标签: phpcodeigniter-3postgresql-9.5

解决方案


推荐阅读