{"record":{"id":"714613ddbb6ed0d6","repo":"ankane/pgsync","slug":"single-column-primary-key-required-for-this-data-r","errorCode":null,"errorMessage":"Single column primary key required for this data rule: #{rule}","messagePattern":"Single column primary key required for this data rule: #(.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"lib/pgsync/task.rb","lineNumber":279,"sourceCode":"          \"NOW() - (RANDOM() * 100000000)::int * INTERVAL '1 second'\"\n        when \"random_ip\"\n          # casting double to int rounds\n          \"(1 + RANDOM() * 254)::int::text || '.0.0.1'\"\n        when \"random_letter\"\n          # casting double to int rounds\n          \"chr(65 + (RANDOM() * 25)::int)\"\n        when \"random_string\"\n          \"RIGHT(MD5(RANDOM()::text), 10)\"\n        when \"null\", nil\n          \"NULL\"\n        else\n          raise Error, \"Unknown rule #{rule} for column #{column}\"\n        end\n      end\n    end\n\n    def quoted_primary_key(table, primary_key, rule)\n      raise Error, \"Single column primary key required for this data rule: #{rule}\" unless primary_key.size == 1\n      \"#{quoted_table}.#{quote_ident(primary_key.first)}\"\n    end\n\n    def maybe_disable_triggers\n      if opts[:disable_integrity] || opts[:disable_integrity_v2] || opts[:disable_user_triggers]\n        destination.transaction do\n          triggers = destination.triggers(table)\n          triggers.select! { |t| t[\"enabled\"] == \"t\" }\n          internal_triggers, user_triggers = triggers.partition { |t| t[\"internal\"] == \"t\" }\n          integrity_triggers = internal_triggers.select { |t| t[\"integrity\"] == \"t\" }\n          restore_triggers = []\n\n          # both --disable-integrity options require superuser privileges\n          # however, only v2 works on Amazon RDS, which added specific support for it\n          # https://aws.amazon.com/about-aws/whats-new/2014/11/10/amazon-rds-postgresql-read-replicas/\n          #\n          # session_replication_role disables more than foreign keys (like triggers and rules)\n          # this is probably fine, but keep the current default for now","sourceCodeStart":261,"sourceCodeEnd":297,"githubUrl":"https://github.com/ankane/pgsync/blob/57bdddf5db506d329b51cb3376379dc3a2559010/lib/pgsync/task.rb#L261-L297","documentation":"Error \"Single column primary key required for this data rule: #{rule}\" thrown in ankane/pgsync.","triggerScenarios":"Thrown at lib/pgsync/task.rb:279 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"57bdddf5db506d329b51cb3376379dc3a2559010","analyzedAt":"2026-08-23T11:18:48.887Z","schemaVersion":2},"datasetVersion":"2026-08-23T16:17:53.355Z"}