Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

BulkInsert "relation does not exist" in migration script #1377

Open
3 of 6 tasks
yourinium opened this issue Sep 8, 2023 · 0 comments
Open
3 of 6 tasks

BulkInsert "relation does not exist" in migration script #1377

yourinium opened this issue Sep 8, 2023 · 0 comments

Comments

@yourinium
Copy link

yourinium commented Sep 8, 2023

Issue Creation Checklist

  • I understand that my issue will be automatically closed if I don't fill in the requested information
  • I have read the contribution guidelines

Bug Description

I have created a migration script that creates a table and then bulk inserts a bunch of values. The CreateTable statement works no problem but when it comes to inserting the data it keeps telling me that the relation does not exist and I have tried everything to try and get around that to no avail.

Reproducible Example

// sequelize script migration to create the lookup-google-places-types table
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.sequelize.transaction(async (t) => {
      await queryInterface.createTable(
        'lookup__google_places_types',
        {
          place_type: {
            type: Sequelize.STRING,
            primaryKey: true,
          },
          report_type: {
            type: Sequelize.STRING,
            allowNull: false,
          },
          google_reviews: {
            type: Sequelize.BOOLEAN,
            defaultValue: false,
          },
          contacts: {
            type: Sequelize.BOOLEAN,
            defaultValue: false,
          },
          social_links: {
            type: Sequelize.BOOLEAN,
            defaultValue: false,
          },
          competitors_map: {
            type: Sequelize.BOOLEAN,
            defaultValue: false,
          },
          created_at: {
            allowNull: false,
            type: Sequelize.DATE,
            defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
          },
          updated_at: {
            allowNull: false,
            type: Sequelize.DATE,
            defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
          },
          deleted_at: {
            type: Sequelize.DATE,
          },
        },
        {
          schema: 'backend',
          transaction: t,
        }
      );

      // Insert statements for lookup__google_places_types to fill in place_type and report_type with a series of tuples
      // example being ('accounting', 'full') or ('airport', 'plus')
      await queryInterface.bulkInsert(
        {
          tableName: 'lookup__google_places_types',
          schema: 'backend',
          transaction: t,
        },
        [
          {
            place_type: 'accounting',
            report_type: 'full',
          },
          {
            place_type: 'airport',
            report_type: 'plus',
          },
          {
            place_type: 'amusement_park',
            report_type: 'full',
          },
          {
            place_type: 'aquarium',
            report_type: 'full',
          },
          {
            place_type: 'art_gallery',
            report_type: 'full',
          },
          {
            place_type: 'atm',
            report_type: 'plus',
          },
          {
            place_type: 'bakery',
            report_type: 'full',
          },
          {
            place_type: 'bank',
            report_type: 'full',
          },
          {
            place_type: 'bar',
            report_type: 'full',
          },
          {
            place_type: 'beauty_salon',
            report_type: 'full',
          },
          {
            place_type: 'bicycle_store',
            report_type: 'full',
          },
          {
            place_type: 'book_store',
            report_type: 'full',
          },
          {
            place_type: 'bowling_alley',
            report_type: 'full',
          },
          {
            place_type: 'bus_station',
            report_type: 'plus',
          },
          {
            place_type: 'cafe',
            report_type: 'full',
          },
          {
            place_type: 'campground',
            report_type: 'full',
          },
          {
            place_type: 'car_dealer',
            report_type: 'full',
          },
          {
            place_type: 'car_rental',
            report_type: 'full',
          },
          {
            place_type: 'car_repair',
            report_type: 'full',
          },
          {
            place_type: 'car_wash',
            report_type: 'full',
          },
          {
            place_type: 'casino',
            report_type: 'full',
          },
          {
            place_type: 'cemetery',
            report_type: 'full',
          },
          {
            place_type: 'church',
            report_type: 'thin',
          },
          {
            place_type: 'city_hall',
            report_type: 'thin',
          },
          {
            place_type: 'clothing_store',
            report_type: 'full',
          },
          {
            place_type: 'convenience_store',
            report_type: 'full',
          },
          {
            place_type: 'courthouse',
            report_type: 'thin',
          },
          {
            place_type: 'dentist',
            report_type: 'full',
          },
          {
            place_type: 'department_store',
            report_type: 'full',
          },
          {
            place_type: 'doctor',
            report_type: 'full',
          },
          {
            place_type: 'drugstore',
            report_type: 'full',
          },
          {
            place_type: 'electrician',
            report_type: 'full',
          },
          {
            place_type: 'electronics_store',
            report_type: 'full',
          },
          {
            place_type: 'embassy',
            report_type: 'thin',
          },
          {
            place_type: 'fire_station',
            report_type: 'thin',
          },
          {
            place_type: 'florist',
            report_type: 'full',
          },
          {
            place_type: 'funeral_home',
            report_type: 'full',
          },
          {
            place_type: 'furniture_store',
            report_type: 'full',
          },
          {
            place_type: 'gas_station',
            report_type: 'full',
          },
          {
            place_type: 'gym',
            report_type: 'full',
          },
          {
            place_type: 'hair_care',
            report_type: 'full',
          },
          {
            place_type: 'hardware_store',
            report_type: 'full',
          },
          {
            place_type: 'hindu_temple',
            report_type: 'thin',
          },
          {
            place_type: 'home_goods_store',
            report_type: 'full',
          },
          {
            place_type: 'hospital',
            report_type: 'full',
          },
          {
            place_type: 'insurance_agency',
            report_type: 'full',
          },
          {
            place_type: 'jewelry_store',
            report_type: 'full',
          },
          {
            place_type: 'laundry',
            report_type: 'full',
          },
          {
            place_type: 'lawyer',
            report_type: 'full',
          },
          {
            place_type: 'library',
            report_type: 'plus',
          },
          {
            place_type: 'light_rail_station',
            report_type: 'plus',
          },
          {
            place_type: 'liquor_store',
            report_type: 'full',
          },
          {
            place_type: 'local_government_office',
            report_type: 'thin',
          },
          {
            place_type: 'locksmith',
            report_type: 'full',
          },
          {
            place_type: 'lodging',
            report_type: 'full',
          },
          {
            place_type: 'meal_delivery',
            report_type: 'full',
          },
          {
            place_type: 'meal_takeaway',
            report_type: 'full',
          },
          {
            place_type: 'mosque',
            report_type: 'thin',
          },
          {
            place_type: 'movie_rental',
            report_type: 'full',
          },
          {
            place_type: 'movie_theater',
            report_type: 'full',
          },
          {
            place_type: 'moving_company',
            report_type: 'full',
          },
          {
            place_type: 'museum',
            report_type: 'full',
          },
          {
            place_type: 'night_club',
            report_type: 'full',
          },
          {
            place_type: 'painter',
            report_type: 'full',
          },
          {
            place_type: 'park',
            report_type: 'plus',
          },
          {
            place_type: 'parking',
            report_type: 'full',
          },
          {
            place_type: 'pet_store',
            report_type: 'full',
          },
          {
            place_type: 'pharmacy',
            report_type: 'full',
          },
          {
            place_type: 'physiotherapist',
            report_type: 'full',
          },
          {
            place_type: 'plumber',
            report_type: 'full',
          },
          {
            place_type: 'police',
            report_type: 'thin',
          },
          {
            place_type: 'post_office',
            report_type: 'plus',
          },
          {
            place_type: 'primary_school',
            report_type: 'plus',
          },
          {
            place_type: 'real_estate_agency',
            report_type: 'full',
          },
          {
            place_type: 'restaurant',
            report_type: 'full',
          },
          {
            place_type: 'roofing_contractor',
            report_type: 'full',
          },
          {
            place_type: 'rv_park',
            report_type: 'full',
          },
          {
            place_type: 'school',
            report_type: 'plus',
          },
          {
            place_type: 'secondary_school',
            report_type: 'plus',
          },
          {
            place_type: 'shoe_store',
            report_type: 'full',
          },
          {
            place_type: 'shopping_mall',
            report_type: 'full',
          },
          {
            place_type: 'spa',
            report_type: 'full',
          },
          {
            place_type: 'stadium',
            report_type: 'plus',
          },
          {
            place_type: 'storage',
            report_type: 'full',
          },
          {
            place_type: 'store',
            report_type: 'full',
          },
          {
            place_type: 'subway_station',
            report_type: 'plus',
          },
          {
            place_type: 'supermarket',
            report_type: 'full',
          },
          {
            place_type: 'synagogue',
            report_type: 'thin',
          },
          {
            place_type: 'taxi_stand',
            report_type: 'full',
          },
          {
            place_type: 'tourist_attraction',
            report_type: 'full',
          },
          {
            place_type: 'train_station',
            report_type: 'plus',
          },
          {
            place_type: 'transit_station',
            report_type: 'plus',
          },
          {
            place_type: 'travel_agency',
            report_type: 'full',
          },
          {
            place_type: 'university',
            report_type: 'full',
          },
          {
            place_type: 'veterinary_care',
            report_type: 'full',
          },
          {
            place_type: 'zoo',
            report_type: 'full',
          },
        ],
        {}
      );
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('lookup__google_places_types');
  },
};

What do you expect to happen?

Table should be created and the records inserted!

What is actually happening?

image

Environment

  • Sequelize version: sequelize@6.32.1
  • Node.js version: v18.12.1
  • If TypeScript related: TypeScript version:
  • Database & Version: AWS Aurora Postgres
  • Connector library & Version: pg

Would you be willing to resolve this issue by submitting a Pull Request?

  • Yes, I have the time and I know how to start.
  • Yes, I have the time but I will need guidance.
  • No, I don't have the time, but my company or I are supporting Sequelize through donations on OpenCollective.
  • No, I don't have the time, and I understand that I will need to wait until someone from the community or maintainers is interested in resolving my issue.

Indicate your interest in the resolution of this issue by adding the 👍 reaction. Comments such as "+1" will be removed.

@WikiRik WikiRik transferred this issue from sequelize/sequelize Sep 9, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

1 participant