使用自动增量将SQL转换为Postgresql

问题描述 投票:0回答:1

我正在以下列方式迁移SQL数据库:

class CitiesRelation < ActiveRecord::Migration[5.0]
  def change

    self.connection.execute %Q(

    -- Create Table --

CREATE TABLE Cities (
  Id INT NOT NULL AUTO_INCREMENT,
  Code INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  State CHAR(2) NOT NULL,
  PRIMARY KEY (Id)
);

-- Insert Data --

Insert into Cities (Code, Name, State) values ('1100015','City_1', 'A');
Insert into Cities (Code, Name, State) values ('1100023','City_2', 'B');
Insert into Cities (Code, Name, State) values ('1100031','City_3', 'C');

)

end 

end

迁移后显示此错误消息:

PG::SyntaxError: ERROR:  syntax error at or near "AUTO_INCREMENT"
LINE 6:   Id INT NOT NULL AUTO_INCREMENT,
                          ^

解决这个问题的最佳方法是什么?我想知道通过种子这样做,但我不知道如何。谢谢。

ruby-on-rails postgresql
1个回答
1
投票

请尝试以下第9.6页

CREATE TABLE Cities (
    Id serial PRIMARY KEY,
    Code INT NOT NULL,
    Name VARCHAR(255) NOT NULL,
    State CHAR(2) NOT NULL
);

第10页或后者

CREATE TABLE staff (
    Id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    Code INT NOT NULL,
    Name VARCHAR(255) NOT NULL,
    State CHAR(2) NOT NULL
);

为什么你不试试rails正常的方式

class CitiesRelation < ActiveRecord::Migration[5.0]
  def change
    create_table :cities do |t|
      t.string :Code, null: false
      t.string :Name, null: false
      t.string :State, null: false

      t.timestamps
    end
  end
end

Rails默认创建id

然后rake db:migrate

这是rails doc

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.