gpt4 book ai didi

ruby-on-rails-3 - Rake db :seed working on local, heroku rake db:seed 试图将空值插入 id 列

转载 作者:行者123 更新时间:2023-12-01 04:12:34 29 4
gpt4 key购买 nike

出于某种原因,当我尝试通过 heroku 执行此操作时,我的 db:seed 无法正常工作。当我在本地执行时,它工作正常。

paul@paul-laptop:~/rails_projects/foglift$ heroku rake db:seed
rake aborted!
PGError: ERROR: null value in column "id" violates not-null constraint
: INSERT INTO "metric_records" ("metric_id", "id", "created_at", "updated_at", "value", "school_id", "date") VALUES (1, NULL, '2011-03-18 20:26:39.792164', '2011-03-18 20:26:39.792164', 463866000.0, 1, '2009-01-01') RETURNING "id"

(See full trace by running task with --trace)
(in /app/5aca24ae-c5a7-4805-a3a1-b2632a5cf558/home)

我不确定为什么它试图将空值放入 id 列,这对我来说没有任何意义。

这是我的seeds.rb 文件。
# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).


directory = "db/seed_data/"

# Pre-load All Schools
School.delete_all
path = File.join(directory, "schools.txt")
open(path) do |schools|
schools.read.each_line do |school|
name, city, state, website, tuition, debt = school.chomp.split("|")
School.create!(:name => name, :city => city, :state => state, :website => website, :current_tuition => tuition, :current_avg_debt => debt)
end
end

# Pre-load All Dashboards
Dashboard.delete_all
path = File.join(directory, "dashboards.txt")
open(path) do |dashboards|
dashboards.read.each_line do |dashboard|
name, extra = dashboard.chomp.split("|")
Dashboard.create!(:name => name)
end
end

# Pre-load All Metrics
Metric.delete_all
path = File.join(directory, "metrics.txt")
open(path) do |metrics|
metrics.read.each_line do |metric|
name, dashboard_id, display, source = metric.chomp.split("|")
Metric.create!(:name => name, :dashboard_id => dashboard_id, :display => display, :source => source)
end
end

# Pre-load All Metric Records
MetricRecord.delete_all
path = File.join(directory, "metric_records.txt")
open(path) do |values|
values.read.each_line do |value|
metric_id, value, date_string, school_id = value.chomp.split("|")
date_string = '01/01/' << date_string
date = Date.strptime(date_string, "%d/%m/%Y") unless date_string.nil?
MetricRecord.create!(:metric_id => metric_id, :value => value, :date => date, :school_id => school_id)
end
end

最佳答案

您的数据库迁移是否有可能没有为 Heroku 数据库上的 metric_records ID 列创建序列?

您可能可以通过以下方式修复它:

CREATE SEQUENCE metric_records_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE metric_records_id_seq OWNED BY metric_records.id;

关于ruby-on-rails-3 - Rake db :seed working on local, heroku rake db:seed 试图将空值插入 id 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357528/

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