在Postgres和Laravel 6.x上,我正在尝试将列从字符串类型更改为整数。我曾经尝试过这样的迁移: public function up()
{
Schema::table('job_listings', function (Blueprint $table) {
$table->integer('company_id')->change();
});
} 当我运行此迁移时,我得到一个错误,该列不能自动转换为整数: In Connection.php line
我尝试使用以下查询postgres将列更改为整数类型。
alter table pm_user alter column testing2 type integer using testing2::integer;
pm_user -表名
testing2 -列名
上面的列将是任何类型的数据类型,例如:布尔值、文本、varchar(256)。
它给错误为' error :无效的整数输入语法:“”空“,我尝试了以下解决方案,基于以前的查询在这个网站,但它不适合我。
alter table pm_user alter column testing2 type integer using (
对postgres来说是新的。
我在Postgres中有一个名为"customer_id“的列,目前定义为”字符变化“。
在DB中,很多行都是空的。
我需要这个列是一个可能为空值的整数。
我怎么能在postgres做到这一点?
我试着运行查询:
alter table leads alter column customer_id type INTEGER using CAST("customer_id" as INTEGER);
但我说错了:
default for column "customer_id" cannot be cast automa
我有一个非空列的表,如何将该列的空值设为默认值?
我是说,我想做这样的事情:
postgres=# ALTER TABLE person ALTER COLUMN phone SET NULL;
但它显示:
postgres=# ALTER TABLE person ALTER COLUMN phone SET NULL;
ERROR: syntax error at or near "NULL"
LINE 1: ALTER TABLE person ALTER COLUMN phone SET NULL;
在我的Postgres数据库中,我有一个列,它的类型是integers,我想它是整数……现在我想要更改它们,不幸的是,这似乎不能使用我的rails迁移。
change_column :table1, :columnB, :integer
它似乎会输出下面的SQL:
ALTER TABLE table1 ALTER COLUMN columnB TYPE integer
所以我试着这样做:
execute 'ALTER TABLE table1 ALTER COLUMN columnB TYPE integer USING CAST(columnB AS INTEGER)'
但是
我最近一直在优化我们的Postgres表,在可能的情况下将更复杂的数据类型转换为更简单的数据类型。到目前为止,除了一种情况之外,每种情况下都是相当简单的,例如:
ALTER TABLE products ALTER COLUMN price TYPE integer USING price::integer;
对于将文本转换为自定义枚举数据类型,这也非常简单。我刚刚编写了一个PLPGSQL函数,它将文本转换为枚举,然后像这样转换列:
ALTER TABLE products ALTER COLUMN color TYPE color_enum USING text_to_color_enum(
我正在尝试将brs.parts表中的列从字符更改为布尔值。到目前为止,该列的数据为Y/N。我正在使用以下命令
ALTER TABLE brs.parts ALTER COLUMN is_dpm_scanned TYPE BOOLEAN USING is_dpm_scanned::BOOLEAN
但我得到了以下错误:
*错误*
ERROR: default for column "is_dpm_scanned" cannot be cast automatically to type boolean
SQL state: 42804
表中的定义是:
CREATE TABLE
当我试图通过以下查询从我的评审表中获得平均评分时:
SELECT AVG(rating) FROM review;
给出以下错误:
[2020-07-27 11:42:10] [42883] ERROR: function sum(review_rating_enum) does not exist
我的评等类型是:
create type review_rating_enum as enum ('1', '2', '3', '4', '5');
是否有方法从Postgres获得AVG,在这种情况下?
我有一个MySQL数据库,希望将其转换为Postgres。我遇到的一个问题是将tinyint(1) (同义词)列转换为" true“布尔值,并保留MySQL列的默认值,该默认值可以是0,也可以是1,但在Postgres中,相应的值是true或false。我正在尝试的SQL:
ALTER TABLE "payments" ALTER COLUMN "is_automatic" TYPE boolean USING CAST("is_automatic" as boolean);
错误信息:
ERROR: default for colum
为了在postgres中将整型数据类型转换为bigserial,我运行了以下命令,但它没有更改其数据类型,但它正在更改修饰符
CREATE SEQUENCE id;
ALTER TABLE user_event_logs ALTER COLUMN id SET NOT NULL;
ALTER TABLE user_event_logs ALTER COLUMN id SET DEFAULT nextval('id');
ALTER SEQUENCE id OWNED BY user_event_logs.id;
运行此命令后,它将显示如下输出
Column Type Modi
我在Postgres中有一个名为money_with_currency的自定义类型,创建为:
CREATE TYPE public.money_with_currency AS (currency_code char(3), amount numeric);
我们希望将currency_code的类型从char(3)更改为varchar。
我以为密码是这样的:
ALTER TYPE public.money_with_currency ALTER ATTRIBUTE currency_code SET DATA TYPE varchar;
但有个错误:
ALTER TYPE public.
我对Postgresql很陌生,我试图从Integer to Varchar(20)中更改列的数据类型,但是我遇到了奇怪的错误:
ERROR: operator does not exist: character varying <> integer :
No operator matches the given name and argument type(s).
You might need to add explicit type casts.********** Error **********
我为创建表编写的脚本是:
CREATE TABL
我正在尝试转换存储在Postgres的HSTORE列(' data ')中的数据。
我的行值有键“实体”,值在数组中。
"entity"=>"[{'id': .............}]
我使用了以下代码:
Alter TABLE my_table
ALTER COLUMN h_store_column TYPE jsonb
USING hstore_to_jsonb_loose(data -> 'entity');
这导致值作为新列中的输出,如下所示:
"[{'id'
将"deleted_at“时间列转换为日期时间列的Rails迁移失败。对如何解决这个问题有什么想法吗?这是Postgres的全新安装,如果与此相关的话。
-- change_column(:products, :deleted_at, :datetime)
PGError: ERROR: column "deleted_at" cannot be cast to type timestamp without time zone
: ALTER TABLE "products" ALTER COLUMN "deleted_at" T
我正在尝试执行后续迁移,以更改"tweet“模型表中的"number”列
class ChangeDataTypeForTweetsNumber < ActiveRecord::Migration
def up
change_column :tweets do |t|
t.change :number, :integer
end
end
def down
change_table :tweets do |t|
t.change :number, :string
end
end
end
在执行到her
我正在尝试回滚在Postgres中对这个名为group_type的Enum添加的内容,它被添加到我的表组中名为type的列中。
在后座我跑了,
ALTER TYPE group_type RENAME TO group_type_old;
CREATE TYPE group_type AS ENUM ('public', 'private');
ALTER TABLE groups ALTER COLUMN type DROP DEFAULT;
ALTER TABLE groups ALTER COLUMN "type" TYPE group_t
我创建了一个名为trackings的表和许多分割的子表,它们被命名为trackings_pt_...。 分区表trackings_pt_...继承自trackings表。 我想将所有表(父表和子表)的id列从integer更改为bigint。 Alter table trackings alter column id set data type bigint; 我面对的是 ERROR: cannot alter inherited column "id" 请帮我解决。 Postgres版本: x86_64- Apple -darwin17.7.0上的PostgreSQL 11
我正在尝试将我的代码部署到heroku,我得到了错误。
-- execute("ALTER TABLE lodges ALTER COLUMN image TYPE integer USING (image::integer)")
PG::Error: ERROR: invalid input syntax for integer: ""
: ALTER TABLE lodges ALTER COLUMN image TYPE integer USING (image::integer)
rake aborted!
我的迁徙是
class ChangeData
目标:让postgres自动生成ids
CREATE TABLE user_privilege (
id bigint NOT NULL,
name character varying(255) NOT NULL,
version integer
);
CREATE TABLE
INSERT INTO user_privilege (name, version) values ('XYZ', 1);
ERROR: null value in column "id" violates not-null constraint
ALTE
(前一个问题是: Postgres在设置多列非空列时会使用多列索引吗?)
通常,当我设置列not null时,如果它没有索引,那么首先添加它,这样postgres可以(希望)在锁定表时使用该索引,从而使表被锁定更短的时间。
我想设置几个列不为空,如下所示:
alter table foos
alter column bar1 set not null
alter column bar2 set not null
alter column bar3 set not null
alter column bar4 set not null;
如果我为这些列建立了一个多色索引,post
我使用postgres9.4,并且存在“病人”与jsonb[]类型有“接触”栏的关系,如何将jsonb[]类型转换为jsonb
以下是记录在案的。
=>select name, contact from "Patients" where contact is not null;
name | contact
--------+------------------------------
ALTER TABLE products ALTER COLUMN power_price DROP DEFAULT;
ALTER TABLE products ALTER COLUMN power_price TYPE bool USING (power_price::boolean);
ALTER TABLE products ALTER COLUMN power_price SET NOT NULL;
ALTER TABLE products ALTER COLUMN power_price SET DEFAULT false;
Postgres给了我这个错误:
查询失败:错误:不能将
我有一个postgres数据库,它有一个表,其中有一个列,它是postgres时间戳(PostgresTime戳,TIMESTAMP[])的数组。出于某些原因,我需要将该列转换为unix (INTEGER[])的整数数组。我在列中有一些数据(现有的时间戳数组),当我以某种方式更改数据类型时,我想要进行转换。
我对sql不太熟悉,尝试在谷歌上搜索答案,我能拼凑出的最好结果是:
ALTER TABLE some_table
ALTER COLUMN phases_started_at TYPE integer[]
USING phases_started_at::integer[];
这给我提
我在其中一个表中有一个名为user的列。我想将它重命名为username,但是当我尝试运行重命名查询时,psql表示查询中有一个错误。我认为这是因为user是postgres中的关键字(这主要是我想重命名它的原因)。
下面是我遇到的错误:
analytics=# alter table events_to_sync rename column user to username;
ERROR: syntax error at or near "user"
LINE 1: alter table events_to_sync rename column user to usern
在我的Postgres数据库中将key_request表中名为end_date的列从time with time zone更改为timestamp时遇到了问题。我已经尝试使用以下代码:
alter table key_request alter column end_date type timestamp with time zone using end_date::timestamp with time zone
我一直收到以下错误:
ERROR: cannot cast type time with time zone to timestamp with time zone
您知道如何调
如何使用plpgsql (bytea -> text)转换列有问题。我编写的函数可以在某些数据库上工作,而不适用于其他数据库。我不知道怎么修好它。
使用8.0-9.3中的数据库;此错误用于8.1.19。
我收到了:
错误:无法将" the_column“列转换为键入"text”上下文: SQL语句"ALTER the_table ALTER the_column text text“PL/pgSQL函数"byteatotext”第11行执行语句
我的职能:
CREATE OR REPLACE FUNCTION byteaToText()
RET
我正在将rails应用程序从sqlite转换为postgres,这样我就可以使用heroku进行部署。我安装了postgres并运行了迁移,但是当我尝试运行一个查询来查找与某个房屋相关联的所有室友时,我得到了以下错误
PG::Error: ERROR: operator does not exist: character varying = integer
LINE 1: SELECT COUNT(*) FROM "mates" WHERE "mates"."house_id" = 1