একটি নতুন রেল প্রকল্পে এসকিউএলাইট থেকে পোস্টগ্রিএসকিউএল পরিবর্তন করুন


125

আমার কাছে একটি রেল অ্যাপ রয়েছে যা ডাটাবেসগুলি এসকিউএলাইটে রয়েছে (দেব এবং উত্পাদন) production যেহেতু আমি হিরকুতে চলেছি, তাই আমি আমার ডাটাবেসকে পোস্টগ্রাইএসকিউএলে রূপান্তর করতে চাই।

যাইহোক, আমি শুনেছি স্থানীয়, বিকাশ, ডাটাবেস এসকিউএলাইট থেকে পরিবর্তন করার প্রয়োজন নেই, সুতরাং আমার এটি পরিবর্তন করার দরকার নেই, তবে আমি কীভাবে এসকিউএলাইট থেকে পোস্টগ্রিএসকিউএল উত্পাদন পরিবেশ পরিবর্তন করতে যাব?

এর আগে কেউ কি কখনও এই কাজ করেছে এবং সাহায্য করতে পারে?

পিএস আমি এই প্রক্রিয়াটি ঠিক কী বলা হয় তা নিশ্চিত নই, তবে এসকিউএলাইট থেকে পোস্টগ্রাইএসকিউএলে ডাটাবেস স্থানান্তরিত করার বিষয়ে শুনেছি, এটি করার দরকার কি?


2
আপনার কাছে এমন লাইভ প্রোডাকশন ডেটা রয়েছে যা এটির সাথে যেতে হবে, বা এটি একটি নতুন / তাজা অ্যাপ্লিকেশন?
ডিলান মার্কো

19
আমি আপনাকে সুপারিশ করব যে আপনি আপনার বিকাশের পরিবেশও পোস্টগ্র্রেএসকিউএল তে পরিবর্তন করুন। "বৈধ এসকিউএল" বলতে কী বোঝায় সে সম্পর্কে এসকিউএলাইট এবং পোস্টগ্র্রেএসকিউএল (এবং প্রতিটি অন্যান্য ডাটাবেস) এর আলাদা ধারণা রয়েছে এবং কোনও ওআরএম আপনাকে ডাটাবেসের সমস্ত আইডিয়োসিএনক্র্যাসি থেকে উত্তাপ করতে পারে না।
মিঃ খুব ছোট

উত্তর:


101

আপনি আপনার ডাটাবেস.আইএমএলটিকে স্কেলাইট বাক্সের বাইরে না ব্যবহারের পরিবর্তে এটিতে পরিবর্তন করতে পারেন:

development:
  adapter: postgresql
  encoding: utf8
  database: project_development
  pool: 5
  username: 
  password:

test: &TEST
  adapter: postgresql
  encoding: utf8
  database: project_test
  pool: 5
  username: 
  password:

production:
  adapter: postgresql
  encoding: utf8
  database: project_production
  pool: 5
  username: 
  password:

cucumber:
  <<: *TEST

1
আমার কি প্রোজেক্ট_স্টেস্ট বা আমার ডাটাবেসের নাম রাখা উচিত?
ভাসুর্থ

5
আপনি যা খুশি নাম রাখতে পারেন। যদি আপনার প্রকল্পের নামটি 'ক্যালকুলেটর' হয় আমি তাদের নাম রাখি ক্যালকুলেটর_প্রডাকশন, ক্যালকুলেটর_তম, ক্যালকুলেটর_ উন্নয়ন
ক্রিস ব্যারেটো

2
@ এমমিকেল এটি কীভাবে আপনার পোস্টগ্র্যাগগুলি সেট আপ করে তার উপর নির্ভর করে। আপনি যদি ম্যাকওএস এক্স লায়ন + এ থাকেন তবে পোস্টগ্রিস.এপ, ব্রু, বা নেটিভ ব্যবহার করে তাদের ডিফল্ট সেটআপে বিভিন্ন বিধিনিষেধ রয়েছে। সুতরাং যদি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রযোজ্য না হয় তবে আপনি এগুলি রেখে দিতে পারেন বা কোনও মান ছাড়াই। এটি কনফিগারেশনের 'ক্যাচ অল' প্রকারের আরও কিছু ছিল।
ক্রিস ব্যারেটো

2
সেখানে 'ও টেস্ট' কী করছে (লাইন 9)?
ডেভিড রোডেন

2
"& টেস্ট" বিকল্পগুলির ডিফল্ট সেট হিসাবে TEST কে সেট করছে। সেগুলি পরে ওভাররাইড করা যেতে পারে বা কেবল বাইরে রেখে দেওয়া যেতে পারে। "<<: * টেস্ট" হ'ল ডিফল্ট @ ডেভিডরোডেন অ্যাক্সেস করার উপায়
ক্রিস ব্যারেটো

44

নীচের পদক্ষেপগুলি আমার জন্য কাজ করেছিল। এটি ব্যবহার করে কল মণি, Heroku দ্বারা নির্মিত এবং রায়ান বেটস এর Railscast # 342 উল্লেখ করেছে। কয়েকটি পদক্ষেপ রয়েছে তবে এটি নিখুঁতভাবে কাজ করেছে (এমনকি তারিখগুলিও সঠিকভাবে স্থানান্তরিত হয়েছিল), এবং এটি অতীতে করা ওরাকল -> ডিবি 2 বা এসকিউএল সার্ভার -> ওরাকল স্থানান্তরগুলির চেয়ে অনেক সহজ ছিল।

মনে রাখবেন যে এসকিউএলাইটের কোনও ব্যবহারকারী আইডি বা পাসওয়ার্ড নেই তবে ট্যাপস রত্নটির জন্য কিছু দরকার। আমি সবেমাত্র আক্ষরিক "ব্যবহারকারী" এবং "পাসওয়ার্ড" ব্যবহার করেছি।

নতুন ডাটাবেসের জন্য পোস্টগ্রিস ডাটাবেস ব্যবহারকারী তৈরি করুন

$ createuser f3
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

সম্পাদনা করুন - নীচে আপডেট হওয়া কমান্ড - পরিবর্তে এটি ব্যবহার করুন

$ createuser f3 -d -s

প্রয়োজনীয় ডাটাবেস তৈরি করুন

$ createdb -Of3 -Eutf8 f3_development
$ createdb -Of3 -Eutf8 f3_test

জেমফাইল আপডেট করুন

gem 'sqlite3'
gem 'pg'
gem 'taps'
$ bundle

ডাটাবেস.আইএমএল আপডেট করুন

#development:
#  adapter: sqlite3
#  database: db/development.sqlite3
#  pool: 5
#  timeout: 5000

development:
  adapter: postgresql
  encoding: unicode
  database: f3_development
  pool: 5
  username: f3
  password:

#test:
#  adapter: sqlite3
#  database: db/test.sqlite3
#  pool: 5
#  timeout: 5000

test:
  adapter: postgresql
  encoding: unicode
  database: f3_test
  pool: 5
  username: f3
  password:

স্ক্লাইট ডাটাবেসে ট্যাপস সার্ভারটি শুরু করুন

$ taps server sqlite://db/development.sqlite3 user password

ডেটা স্থানান্তর করুন

$ taps pull postgres://f3@localhost/f3_development http://user:password@localhost:5000

রেলস ওয়েবসভারটি পুনরায় চালু করুন

$ rails s

রত্নটি পরিষ্কার করুন

#gem 'sqlite3'
gem 'pg'
#gem 'taps'
$ bundle

10

যেহেতু আপনি হিরকুতে চলেছেন, আপনি এটি করতে কলগুলি ব্যবহার করতে পারেন:

heroku db:push

এটি আপনার স্থানীয় বিকাশের স্ক্লাইট ডেটা উত্পাদনকে ধাক্কা দেবে এবং হিরাকু স্বয়ংক্রিয়ভাবে আপনার জন্য পোস্টগ্রিতে রূপান্তরিত হবে।

এটি কোনও প্রোডাকশন স্ক্লাইট ডিবিকে হিরকুতে ঠেলাতেও কাজ করা উচিত, তবে এটি পরীক্ষা করা হয়নি।

RAILS_ENV=production heroku db:push

1
ট্যাপস রত্নটি 1.9.3 এর সাথে ভালভাবে কাজ করছে বলে মনে হচ্ছে না, এটি চালানোর জন্য আপনার স্থানীয়ভাবে 1.9.2 ইনস্টল করার দরকার থাকতে পারে - একবার আমি এটি করলাম যে এটি মস্তিষ্কেরভাবে
sbeam

এটি আর সম্ভব নয়। : আরও তথ্যের জন্য এই প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/19817851/...
sykaeh

5

আপনার জেলফাইলে " রত্ন ' পিজি" "লাইনটি যুক্ত করতে হবে ,' পিজি 'রেলগুলির জন্য বর্তমান পোস্টগ্রিজ রত্ন।


5

কেবল কনফিগারেশন / ডাটাবেস.আইএমএল ফাইল আপডেট করুন:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: projectname_development

test:
  <<: *default
  database: projectname_test

production:
  <<: *default
  database: projectname_production
  username: 
  password: 

উপরেরটি যা চালিত হয় তা উত্পন্ন হয়:

$ rails new projectname --database=postgresql --skip-test-unit

এটি আপনার জেমফাইলে যুক্ত করুন:

gem 'pg'

5

এখন এটি একক কমান্ডের সাহায্যে সহজ হয়ে উঠবে

bin/rails db:system:change --to=postgresql

1
এটি দুর্দান্ত উত্তর, এটি প্রয়োজনীয় মানগুলির সাথে ডাটাবেস.আইএমএল পরিবর্তন করে। আপনি এখনও সেখানে যেতে পারেন এবং আপনার প্রকল্প অনুযায়ী ডাটাবেসের নাম পরিবর্তন করতে পারেন।
csalmeida

3

রত্নটি রত্নটির 'sqlite3সাথে pgরত্নকে প্রতিস্থাপন করার পরে , হিরোকু sqlite3 errorমাস্টারের কাছে চাপ দেওয়ার সময় আমি পেয়ে যাচ্ছিলাম কারণ আমি আপডেট করা রত্নটি রক্ষা করতে ভুলে গিয়েছিলাম। কেবল নীচের কাজগুলিই এর সমাধান করেছে:

git add .
git commit -m 'heroku push'
heroku create 
git push heroku master

3

শুধু আপনাকে datatbase.yml আপডেট করুন

development: &development
  adapter: postgresql
  database: Your_database_name
  username: user_name
  password: password
  host:     localhost
  schema_search_path: public
  min_messages: warning

test:
  <<: *development
  database: test_database_name

production:
  <<: *development
  database: production_db_name

আমরা রেল ব্যবহার করছি এবং মৌলিক মানগুলি DRY, কনভেনশন ওভার কনফিগারেশন ইত্যাদির মতো হওয়া উচিত so সুতরাং উপরের কোডে আমরা একই কোডটি বারবার পুনরাবৃত্তি করছি না।


2

এটি আমার উপরে উল্লিখিত হয়েছে, তবে লুকার হিসাবে এটি উত্সাহিত করতে আমার যথেষ্ট খ্যাতি নেই। এই উত্তরটি পড়তে পেরে নতুনদের জন্য একটু বেশি মনোযোগ আকর্ষণ করার আশায়:

আপনার জেলফাইলে "রত্ন 'পিজি" "লাইনটি যুক্ত করতে হবে,' পিজি 'রেলগুলির জন্য বর্তমান পোস্টগ্রিজ রত্ন।

R আপনার রেইল অ্যাপটিকে পোস্টগ্র্রেসে মাইগ্রেট করার জন্য নির্বাচিত উত্তরে বর্ণিত ডাটাবেস.আইএমএল ফাইলের পাশাপাশি এটি একটি মূল টুকরা।


1

আমার সেটআপটি এভাবেই হয়। আপনি যদি কেবল এমআরআই ব্যবহার করেন এবং জুরুবি না ব্যবহার করে আপনি অ্যাডাপ্টারের সেটিংসে লজিকটি এড়িয়ে যেতে পারেন।

defaults: &defaults
  adapter: <%= RUBY_ENGINE == 'ruby' ? 'postgresql' : 'jdbcpostgresql' %>
  encoding: unicode
  pool: 5
  timeout: 5000

development:
  database: project_development
  <<: *defaults

test:
  database: project_test
  <<: *defaults

production:
  database: project_production
  <<: *defaults



0

আজ আমারও একই সমস্যা ছিল। আমি 4.2.8 রেলগুলিতে কাজ করছি। সমাধানটি আমার ক্ষেত্রে, পিজি রত্ন সংস্করণটি নির্দিষ্ট করে দেওয়া হয়েছিল 0.18.4

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.