Soru Rails'de birincil anahtarla tablolar ve problemler oluşturma


Mysql2'yi veritabanı yöneticisi olarak kullanarak Rails'de aşağıdaki kodu çalıştırmaya çalıştığımda:

rake db:migrate

Aşağıdaki hatayı alıyorum:

 rake aborted!
 "Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL:"

Tablodaki birincil anahtar varsayılan olarak "null" DEĞİL ise, bu hatayı neden aldım?

Göç kodu, ancak:

class CreateUsers < ActiveRecord::Migration
   def change
    create_table :users do |t|
     t.string "first_name"
     t.timestamps
    end
   end 
end

44
2018-01-12 14:01


Menşei


Lütfen taşıma kodunuzu gönderin. Sanki nulllara izin veren kompozit PK'ye sahipsin gibi geliyor. - Michael Berkowski
Eklemedim, çünkü orada garip bir şey görmüyorum. Ancak, soruya ekliyorum - Hedley Quintana
MySQL sürümünüz nedir? Eski bir Rails sürümüyle çok yeni bir sürüm çakışması gibi görünüyor: github.com/rails/rails/pull/13247  Rayları güncelleyebilir misiniz? - Michael Berkowski
Ruby'nin en son sürümüne (2.0.0p53), Rails'e (4.0.2) sahibim ve 32 bit için MySQL sunucu sürüm 5.7'ye sahibim. - Hedley Quintana
Çok teşekkürler Bay Berkowski! MySQL sunucusunu 5.7'den 5.6'ya düşürdüm ve sorun çözüldü! - Hedley Quintana


Cevaplar:


Daha önce de aynı sorun vardı ve buraya göre çözdüm https://github.com/rails/rails/pull/13247#issuecomment-32425844

Rails 2.3.5, MySQL sürüm 5.7.9 ve sahip olmanız gereken mysql gem ile   bir başlatıcı olarak bu bit   config / ilklendiriciler / abstract_mysql_adapter.rb:

class ActiveRecord::ConnectionAdapters::MysqlAdapter
  NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

Mysql2 için, config / initializers / abstract_mysql2_adapter.rb olmalıdır:

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
  NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

85
2017-12-22 05:47



Sağol kanka.. :) - Jai Kumar Rajput


Mysql 5.7 kırılma değişim sayfasından:

PRIMARY KEY içindeki sütunlar NULL olmamalıdır, ancak açıkça bildirilirse   NULL olarak hiçbir hata üretmedi. Şimdi bir hata oluşur. Örneğin,   CREATE TABLE t (i INT NULL PRIMARY KEY) gibi deyim reddedildi.   Aynısı benzer ALTER TABLE ifadeleri için de geçerlidir. (Hata # 13995622,   Hata # 66987, Hata # 15967545, Hata # 16545198)

MySQL 5.7.3'teki değişiklikler (2013-12-03, Milestone 13)

Bu konu tamir edildi 3 ay önce. Rails versiyonunun ne olacağını bilmiyorum

maymun yama İşte

DÜZENLE: Bu düzeltmenin ustalıkla birleştirildiği bir yıldan fazla oldu. Yani, Rails'in son versiyonunun bir parçası olmalı.

DÜZENLE: Aslında, bunu düzelten taahhüt aşağıdaki adreste bulunabilir: https://github.com/yahonda/rails/commit/b6655885ef13cf8d1705dc9b5232846f0207febd ve düzeltmenin dahil olduğunu gösterir. v4.2.0.beta1, v4.1.6.rc1, v4.1.5, v4.1.4, v4.1.3, v4.1.2, v4.1.2.rc3, v4.1.2.rc2, v4.1.2.rc1, v4.1.1, v4.1.0, v4.1.0.rc2, v4.1.0.rc1, v4.1.0.beta2, v4.1.0.beta1. En azından v4.1.0'a yükseltmek sizin için bir seçenekse, sorunu düzeltmelidir.


29
2018-03-11 00:24



FYI, Rails 3 için gerekli maymun yaması: stackoverflow.com/a/34555109/293280 - Joshua Pinter


Bu sorun mysql 5.7.x kullanarak bir 4.0.x uygulaması raylar çalıştıran vardı. 4.2.x raylarına yükselterek ve taşlarmı yükselterek tamir edebildim.

(Eminim bu mücevher dosyalarının işe yarayacağına eminim, ama umarım hala yardımcı olurlar)

Eski Gemfile

source 'https://rubygems.org'
ruby '2.0.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.13'
gem 'mysql2'
# Use unicorn as the app server
# gem 'unicorn'

gem 'sidekiq'
gem 'sinatra'
gem 'whenever'

gem 'thin'
gem 'faye'
gem 'faye-websocket'

#pdf generation
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'

# Assets
gem 'backbone-on-rails', '~> 0.9.9'
gem 'coffee-rails', '~> 4.0.1'
gem 'coffee-script-source', '=1.8.0'
gem 'ejs'                                   # uses templates for backbone
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'neat'
gem 'sass-rails', '~> 4.0.3'
gem 'therubyracer'
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'

gem 'active_model_serializers', '0.8.3'
gem 'acts_as_list'
gem 'bcrypt-ruby', '~> 3.1.2'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem 'bower-rails'
gem 'carrierwave'
gem 'enumerize'
gem 'embedly'                         # Url to Attachment Processing
gem 'fancybox2-rails', '~> 0.2.4'
gem 'flamegraph'
gem 'fog'                     # s3 storage
gem 'globalize'   # I18n for tagging, etc.
gem 'globalize-accessors'
gem 'i18n-tasks', '~> 0.8.3'
gem 'hirb'
gem 'kaminari'
gem 'nokogiri'
gem 'newrelic_rpm'
gem 'select2-rails'                   # Token Fields
gem 'twilio-ruby'
gem 'rails_autolink'                  # Convert urls to links
gem 'redis', '3.2.1'
gem 'rest-client'
gem 'rmagick'
gem 'rubyzip', :require => 'zip'        # Zip files together
gem 'unf'
gem 'mailgun-ruby', '~>1.0.3', require: 'mailgun'

# Deployments
gem 'mina'

group :doc do
  gem 'sdoc'
end

group :test do
  gem 'rspec-rails', "= 2.14.2"
  gem 'shoulda-matchers', :require => false
  gem 'simplecov', '~> 0.9.2'
  gem 'database_cleaner'
  gem 'codeclimate-test-reporter', require: nil
end

group :development, :test do
  gem 'quiet_assets'
  gem 'factory_girl_rails', "~> 4.0"
  gem 'guard', '>=2.1.0'
  gem 'guard-rspec', '= 4.2.9'
  gem 'spring', '1.3.6'
  gem 'spring-commands-rspec'
  gem 'foreman'
end

Yeni Gemfile

source 'https://rubygems.org'
ruby '2.3.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5'
gem 'mysql2'
gem 'stackprof'
# Use unicorn as the app server
# gem 'unicorn'

gem 'sidekiq'
gem 'sinatra'
gem 'whenever'

gem 'thin'
gem 'faye'
gem 'faye-websocket'

#pdf generation
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'

# Assets
gem 'backbone-on-rails', '~> 0.9.9'
gem 'coffee-rails', '~> 4.0.1'
gem 'coffee-script-source', '=1.8.0'
gem 'ejs'                                   # uses templates for backbone
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'neat'
gem 'sass-rails', '~> 4.0.3'
gem 'therubyracer'
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'

gem 'active_model_serializers', '0.8.3'
gem 'acts_as_list'
gem 'bcrypt', '~> 3.1.2'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem 'bower-rails'
gem 'carrierwave'
gem 'enumerize'
gem 'embedly'                         # Url to Attachment Processing
gem 'fancybox2-rails', '~> 0.2.4'
gem 'flamegraph'
gem 'fog'                     # s3 storage
gem 'globalize'   # I18n for tagging, etc.
gem 'globalize-accessors'
gem 'i18n-tasks', '~> 0.8.3'
gem 'hirb'
gem 'kaminari'
gem 'nokogiri'
gem 'newrelic_rpm'
gem 'select2-rails'                   # Token Fields
gem 'twilio-ruby'
gem 'rails_autolink'                  # Convert urls to links
gem 'redis', '3.2.1'
gem 'rest-client'
gem 'rmagick'
gem 'rubyzip', :require => 'zip'        # Zip files together
gem 'unf'
gem 'mailgun-ruby', '~>1.0.3', require: 'mailgun'
gem 'rack-cors', :require => 'rack/cors'

# Deployments
gem 'mina'

group :doc do
  gem 'sdoc'
end

group :test do
  gem 'rspec-rails', "= 2.14.2"
  gem 'shoulda-matchers', :require => false
  gem 'simplecov', '~> 0.9.2'
  gem 'database_cleaner'
  gem 'codeclimate-test-reporter', require: nil
end

group :development, :test do
  gem 'quiet_assets'
  gem 'factory_girl_rails', "~> 4.0"
  gem 'guard', '>=2.1.0'
  gem 'guard-rspec', '= 4.2.9'
  gem 'spring', '1.6.1'
  gem 'spring-commands-rspec'
  gem 'foreman'
end

2
2018-01-14 15:44