I have use laravel 11 and postgres 17, when I use import file to create column for table in database (file only have ~500 rows, which means it will create about 500 new columns for the table). But I get error SQLSTATE[54011]: Too many columns: 7 ERROR: tables can have at most 1600 columns
even though my table originally only had 18 columns. Here my functions:
DB::beginTransaction();
try {
... read data from file ...
foreach ($data as $record) {
$sql = "ALTER TABLE "$record[0]" ADD COLUMN IF NOT EXISTS "$record[1]" $record[2]($record[3]);"
Log::debug('insert >>> ' . $sql);
DB::statement($sql);
# this query below I use to check number of column in table after insert.
$qlCountCol = "SELECT count(*) as temp FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'custom_object_bc1d0996-7911-41c0-bfda-374680f6e614'";
$respo = DB::select($qlCountCol);
Log::debug($obj->table_name . ' >>>>>> col >>>> ' . json_encode($respo[0]));
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
report($e);
throw $e;
}
And I get log as below:
....
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_e0ab6fa8-e4f7-4bee-b8ed-1d0bb4975118" BIGINT ;
[2025-06-30 01:24:37] local.DEBUG: custom_object_bc1d0996-7911-41c0-bfda-374680f6e614 >>>>>> col >>>> {"temp":385}
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_739b4b6f-4c49-43d0-8840-b4559fec8601" BIGINT ;
[2025-06-30 01:24:37] local.DEBUG: custom_object_bc1d0996-7911-41c0-bfda-374680f6e614 >>>>>> col >>>> {"temp":386}
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_1a43292d-e691-4d73-a3d6-52f65822dfce" BIGINT ;
[2025-06-30 01:24:37] local.DEBUG: custom_object_bc1d0996-7911-41c0-bfda-374680f6e614 >>>>>> col >>>> {"temp":387}
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_4cc4dcf0-216e-4260-b7ee-00e4192bbaf7" BIGINT ;
[2025-06-30 01:24:37] local.DEBUG: custom_object_bc1d0996-7911-41c0-bfda-374680f6e614 >>>>>> col >>>> {"temp":388}
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_0f4a5850-da64-4d9f-88b6-e5d676b4b3dc" BIGINT ;
[2025-06-30 01:24:37] local.DEBUG: custom_object_bc1d0996-7911-41c0-bfda-374680f6e614 >>>>>> col >>>> {"temp":389}
[2025-06-30 01:24:37] local.DEBUG: insert >>> ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_de47c89a-29c7-4180-a1da-b4d143fa8b1c" BIGINT ;
[2025-06-30 01:24:37] local.ERROR: SQLSTATE[54011]: Too many columns: 7 ERROR: tables can have at most 1600 columns (Connection: default, SQL: ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_de47c89a-29c7-4180-a1da-b4d143fa8b1c" BIGINT ;) {"userId":1,"exception":"[object] (Illuminate\Database\QueryException(code: 54011): SQLSTATE[54011]: Too many columns: 7 ERROR: tables can have at most 1600 columns (Connection: tenant, SQL: ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614" ADD COLUMN IF NOT EXISTS "field_de47c89a-29c7-4180-a1da-b4d143fa8b1c" BIGINT ;) at /src/vendor/laravel/framework/src/Illuminate/Database/Connection.php:825)
I don’t know why my table just have 389 columns but I getting error over 1600 columns of postgres. Please explain for me why I’m geting this error and how to resolve it. Thanks.
PS:
I think is not error of PHP and laravel. I have try insert with psql query as below I getting same errors. (limit char post I can’t paste full query but it simple as below)
ALTER TABLE "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614"
ADD COLUMN IF NOT EXISTS "field_b23058d5-de8b-4b99-a405-a3500b66d33a" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_fb93ff3e-7ced-48fc-9b42-cde892151c68" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_e1d56b40-f37c-406a-8703-ab1a6d0930ff" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_cb6b05da-3882-4c85-aa49-d0bdd0b0641f" BIGINT,
ADD COLUMN IF NOT EXISTS "field_bc797a62-cb29-413c-bf64-bd32ac82cb4e" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_892c85e9-e740-4b8a-ac37-b98a1c2678a4" BIGINT,
ADD COLUMN IF NOT EXISTS "field_ac87a2dd-a679-4716-95a2-d3abf1b32886" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_dd425cb6-4ee3-4b4f-9403-37ec424e59f0" BIGINT,
ADD COLUMN IF NOT EXISTS "field_e365f94f-4beb-40bd-9ac8-6339391a1c11" BIGINT,
ADD COLUMN IF NOT EXISTS "field_2db92de6-9419-44e1-bfdc-757c6bde52da" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_12915b57-fd61-40d1-93dd-dd1994baec4e" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_f88ed3f7-04cf-4db9-8297-7bc44f1c094c" JSONB,
ADD COLUMN IF NOT EXISTS "field_e9a28e0f-ede5-445f-8f07-96617ef759cf" VARCHAR(255),
ADD COLUMN IF NOT EXISTS "field_3b859643-b359-4adc-b3c4-9f1ac3b2fd41" BIGINT,
ADD COLUMN IF NOT EXISTS "field_c74b07c2-8311-4027-83c4-b745d88c3960" BIGINT,
ADD COLUMN IF NOT EXISTS "field_b357fe9a-f50c-446d-ba65-71db4b7bcb20" BIGINT,
ADD COLUMN IF NOT EXISTS "field_38cd0f1f-a26d-4b8b-84c3-a04051c5e2e4" BIGINT,
ADD COLUMN IF NOT EXISTS "field_1451940a-43e8-4935-bcc2-b2a732260d21" BIGINT,
ADD COLUMN IF NOT EXISTS "field_145d9521-6483-4c90-aef9-42aa2c8cf1e2" BIGINT,
ADD COLUMN IF NOT EXISTS "field_e1806caa-67bc-44fa-95a3-bb5fd63d92fd" BIGINT,
ADD COLUMN IF NOT EXISTS "field_7675886b-ff57-4b92-8911-585c0783e192" BIGINT,
ADD COLUMN IF NOT EXISTS "field_735797bc-7644-47c7-886b-5f01ec6b1558" BIGINT,
ADD COLUMN IF NOT EXISTS "field_d015393b-6ae9-4af6-8b21-ad2b92c90f7b" BIGINT,
ADD COLUMN IF NOT EXISTS "field_14e382ac-6247-4867-a3f8-8528fd019fc9" BIGINT,
ADD COLUMN IF NOT EXISTS "field_705be07f-a407-4892-b367-675d1b87cc0d" BIGINT,
ADD COLUMN IF NOT EXISTS "field_144cf94c-bb50-456b-82d5-6805cb4c59b7" BIGINT,
ADD COLUMN IF NOT EXISTS "field_0ff561b2-596f-46ae-a290-d3cf7a9b256c" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9281c4c2-91fd-49cc-9575-729dce9bf669" BIGINT,
ADD COLUMN IF NOT EXISTS "field_2bf72685-0515-481f-8e0b-b64d1b242c61" BIGINT,
ADD COLUMN IF NOT EXISTS "field_d811281c-5821-4145-806c-1bd66f573f99" BIGINT,
ADD COLUMN IF NOT EXISTS "field_88e3d912-fe60-41a8-b030-d3fa18a426d4" BIGINT,
ADD COLUMN IF NOT EXISTS "field_93d47e04-9414-4c48-adaf-ab7d366d7efa" BIGINT,
ADD COLUMN IF NOT EXISTS "field_d299459b-d4e3-47b6-a855-36d11634195c" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9115abd9-89d1-4888-92ec-d9ade862077a" BIGINT,
ADD COLUMN IF NOT EXISTS "field_e06a4cc4-5581-4623-b2f8-714652ce574b" BIGINT,
ADD COLUMN IF NOT EXISTS "field_8da5a451-f91a-4465-b527-6e99aeaf5bb8" BIGINT,
ADD COLUMN IF NOT EXISTS "field_aa8938f2-4b55-4036-bd3a-c05d8b93a191" BIGINT,
ADD COLUMN IF NOT EXISTS "field_5078b490-ee17-4bce-9d01-47eba010ebe2" BIGINT,
ADD COLUMN IF NOT EXISTS "field_dc9ce45f-3692-42d7-afd8-2ab7af1709dd" BIGINT,
ADD COLUMN IF NOT EXISTS "field_3af0dcc1-e624-431e-96ba-5fae69e4762f" BIGINT,
ADD COLUMN IF NOT EXISTS "field_71fbee40-5b13-4ef8-b3f7-7f496d944867" BIGINT,
ADD COLUMN IF NOT EXISTS "field_aaf1d70d-4e7b-4735-80f5-ade6956cdbc3" BIGINT,
ADD COLUMN IF NOT EXISTS "field_dc820da3-539b-4c6d-a108-7061b9aef69c" BIGINT,
ADD COLUMN IF NOT EXISTS "field_abe56663-b39e-4bb4-89ce-b1b70503df17" BIGINT,
ADD COLUMN IF NOT EXISTS "field_8d7db4ba-786c-4d62-b360-ed2df1c6969d" BIGINT,
ADD COLUMN IF NOT EXISTS "field_deba0917-a1cf-4343-b18e-127d22aacdca" BIGINT,
ADD COLUMN IF NOT EXISTS "field_b1bf0bb4-e3ba-495f-a397-94e7be7b89cd" BIGINT,
ADD COLUMN IF NOT EXISTS "field_033e1090-0ebd-4f80-b82e-858b39296bf9" BIGINT,
ADD COLUMN IF NOT EXISTS "field_fdba15df-a89c-4943-aaa6-85c1111e697e" BIGINT,
ADD COLUMN IF NOT EXISTS "field_59a03046-4b87-4093-bceb-489739e8793f" BIGINT,
ADD COLUMN IF NOT EXISTS "field_faaa39f7-69c8-4dd7-b9d6-937531b08870" BIGINT,
ADD COLUMN IF NOT EXISTS "field_f0dd7ac8-0469-4143-8e68-60959ebee538" BIGINT,
ADD COLUMN IF NOT EXISTS "field_f946f78c-b7d1-4827-b34a-0bb9483a9c19" BIGINT,
ADD COLUMN IF NOT EXISTS "field_8126f4d7-4d4f-48f2-8823-5a4e8a80693c" BIGINT,
ADD COLUMN IF NOT EXISTS "field_7935ff59-63e9-4da0-ad1a-51efe6a0ba58" BIGINT,
ADD COLUMN IF NOT EXISTS "field_193d1cb4-c383-4d2d-848c-aa6f5f8e571e" BIGINT,
ADD COLUMN IF NOT EXISTS "field_4678d5b9-7e14-4366-b225-39df6b826401" BIGINT,
ADD COLUMN IF NOT EXISTS "field_19d2f6b3-912a-43d4-8945-8624d6cfbc90" BIGINT,
ADD COLUMN IF NOT EXISTS "field_e1eade5b-b2f5-4987-990a-69d6f1225c42" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9a78d50e-6283-411a-8905-54217fcb74c1" BIGINT,
ADD COLUMN IF NOT EXISTS "field_e3ab0679-b426-45bf-af4c-702a1910bb1c" BIGINT,
ADD COLUMN IF NOT EXISTS "field_90545d3d-1d7a-4c35-a48f-286ab4aa0752" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9212dfc2-86ac-42b5-8ab7-e84d6a8ee98e" BIGINT,
ADD COLUMN IF NOT EXISTS "field_b6b9c15b-68f2-400b-b993-a8a3225c18a8" BIGINT,
ADD COLUMN IF NOT EXISTS "field_fb73c25f-6fcb-40fb-8f5d-097ecb251611" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9d356167-ff6f-4787-8478-f6d879ae089b" BIGINT,
ADD COLUMN IF NOT EXISTS "field_b6dd4ccd-a092-4133-97ed-6692a0f994f0" BIGINT,
ADD COLUMN IF NOT EXISTS "field_cba4e187-97af-4e7a-a13f-d8164bd977bf" BIGINT,
ADD COLUMN IF NOT EXISTS "field_c0738d8c-ea33-47cb-91b6-29187c95b6d4" BIGINT,
ADD COLUMN IF NOT EXISTS "field_77a16feb-3b35-45fc-ab2f-aeb286606d87" BIGINT,
ADD COLUMN IF NOT EXISTS "field_43adf597-3f90-475c-9ea0-a01b671dd07e" BIGINT,
ADD COLUMN IF NOT EXISTS "field_da46313b-eef8-49a6-a868-43b6df107c32" BIGINT,
ADD COLUMN IF NOT EXISTS "field_35e22a68-fc8f-45f2-8157-3bf9cd118a0a" BIGINT,
ADD COLUMN IF NOT EXISTS "field_63089c3f-9741-41c2-b729-069116a35b22" BIGINT,
ADD COLUMN IF NOT EXISTS "field_8157276f-08a5-41bd-a5e9-31fb2f20cff6" BIGINT,
ADD COLUMN IF NOT EXISTS "field_bf42f320-6ba6-470f-bc7e-81f71cf3f7ef" BIGINT,
ADD COLUMN IF NOT EXISTS "field_9e3b04d7-fbe0-4605-ab9c-263dce772508" BIGINT,
ADD COLUMN IF NOT EXISTS "field_f9a11b2a-7929-4133-a31e-3544e34c1efb" BIGINT,
ADD COLUMN IF NOT EXISTS "field_c00f53d1-8aa8-4242-b55f-0bf3fc8d3b9e" BIGINT, ....
with table have structs as belows
create table "custom_object_bc1d0996-7911-41c0-bfda-374680f6e614"
(
id bigserial
primary key,
user_managed_id uuid default gen_random_uuid(),
name varchar(255),
owned_by bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_owned_by_for
references users
on delete cascade,
layout_id bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_field_layout
references custom_field_layouts
on delete cascade,
role_id bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_role_id_fore
references roles
on delete cascade,
path_id bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_path_id_fore
references paths
on delete cascade,
corporate_number varchar(255),
marksetil_label jsonb,
timset_label jsonb,
created_at timestamp(0) default CURRENT_TIMESTAMP,
created_by bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_created_by_f
references users
on delete cascade,
updated_at timestamp(0) default CURRENT_TIMESTAMP,
updated_by bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_updated_by_f
references users
on delete cascade,
deleted_at timestamp(0),
deleted_by bigint
constraint custom_object_bc1d0996_7911_41c0_bfda_374680f6e614_deleted_by_f
references users
on delete cascade,
system_updated_at timestamp(0),
settings jsonb
);
PS2:
I tested it and it is correct according to this comment table can have at most 1600 columns in postgres openerp