gpt4 book ai didi

php - 使用 Codeigniter 迁移和 DBFORGE 在 POSTGRESQL 中创建 ENUM

转载 作者:行者123 更新时间:2023-11-29 14:02:41 24 4
gpt4 key购买 nike

我想在 postgres 数据库中创建一个带有 ENUM 字段的表。

通常,当我们在 postgresql 中创建枚举时,我们命名枚举和我们想要设置枚举的列,选择该枚举名称。但我如何在 Codeigniter 中执行此操作?

下面是我的代码:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Migration_Admin_Locations extends CI_Migration {

public function up()
{

$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'null' => FALSE,
'auto_increment'=>TRUE,
'constraint' => 11,
),
'location_name' => array(
'type' => 'VARCHAR',
'constraint' => 50,
'null' => TRUE,
),
'tenant_id' => array(
'type' => 'INT',
'null' => TRUE,
),
'description' => array(
'type' => 'VARCHAR',
'constraint' => 128,
'null' => TRUE,
),
'is_default' => array(
'type' => 'ENUM("a","b","c")',
'default' => "a",
'null' => TRUE,
),
));

$this->dbforge->add_key('id');
$this->dbforge->create_table('admin_locations');
$query = $this->db->get('admin_locations');
$res=$query->num_rows();

if($res==0)
{
$data = array(
'id'=>"1",
'location_name'=>"default site",
'tenant_id'=>"1",
'description'=>"This is default site for portal",
'is_default'=>"a",
);
$this->db->insert('admin_locations', $data);
}

}
public function down()
{
$this->dbforge->drop_table('admin_locations');
}
}

但这会引发错误:

A PHP Error was encountered Severity: Warning

Message: pg_query(): Query failed: ERROR: type "enum" does not exist LINE 6: "is_default" ENUM("a","b","c") DEFAULT 'no' NULL ^

Filename: postgre/postgre_driver.php

Line Number: 242

Backtrace:

最佳答案

在 PostgreSQL 中,您必须首先创建枚举类型,然后将其用作字段类型。参见 PostgreSQL 枚举类型 documentation供引用。

我不太了解 CI,但我看到了 Database Forge class不支持创建枚举类型,因此您必须首先使用纯 SQL 或某些 CI SQL 构建器创建它,然后您可能可以在 add_field 中使用该枚举类型名称。方法。

关于php - 使用 Codeigniter 迁移和 DBFORGE 在 POSTGRESQL 中创建 ENUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54071841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com