레일에서 기본 키로 테이블 및 문제 만들기
Mysql2를 데이터베이스 관리자로 사용하여 Rails에서 다음 코드를 실행하려고 할 때:
rake db:migrate
다음 오류가 발생합니다.
rake aborted!
"Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL:"
테이블의 기본 키가 기본적으로 "null"이 아닌 경우 이 오류가 발생하는 이유는 무엇입니까?
그러나 마이그레이션 코드:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string "first_name"
t.timestamps
end
end
end
이전에도 같은 문제가 있었는데 여기 https://github.com/rails/rails/pull/13247#issuecomment-32425844 에 따라 해결했습니다.
Rails 2.3.5, MySQL 버전 5.7.9 및 mysql gem에서는 config/initializer/abstract_mysql_adapter.rb에서 이 비트를 초기화기로 사용해야 합니다.
class ActiveRecord::ConnectionAdapters::MysqlAdapter NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" end
mysql2의 경우 config/initializer/abstract_mysql2_adapter.rb:
class ActiveRecord::ConnectionAdapters::Mysql2Adapter NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" end
mysql 5.7 breaking change 페이지에서:
Primary KEY의 열은 NULL이 아니어야 하지만 NULL로 명시적으로 선언된 경우 오류가 발생하지 않습니다.이제 오류가 발생합니다.예를 들어 CREATE TABLE t(iINT NULL Primary KEY)와 같은 문은 거부됩니다.유사한 ALTERTABLE 문에서도 동일하게 발생합니다. (Bug #13995622, Bug #66987, Bug #15967545, Bug #16545198)
MySQL 5.7.3의 변화 (2013-12-03, 마일스톤 13)
이 문제는 3개월 전에 해결되었습니다.레일즈 버전의 일부가 될지는 모르겠습니다.
원숭이 패치가 왔습니다.
편집: 이 수정 사항이 마스터에 병합된 지 1년이 넘었습니다.그래서 레일즈의 마지막 버전의 일부임에 틀림없습니다.
편집: 실제로 이를 수정하는 커밋은 https://github.com/yahonda/rails/commit/b6655885ef13cf8d1705dc9b5232846f0207febd 에서 확인할 수 있으며 수정 내용이 포함되어 있음을 보여줍니다.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
. v4.1.0 이상으로 업그레이드하는 것이 옵션인 경우 문제를 해결해야 합니다.
mysql 5.7.x를 사용하여 레일 4.0.x 앱을 실행하는 데 문제가 있었습니다. 레일 4.2.x로 업그레이드하고 보석을 업그레이드하여 수정할 수 있었습니다.
(이 보석 파일들은 작업이 필요하겠지만 그래도 도움이 되기를 바랍니다.)
올드 젬파일
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
뉴젬파일
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
언급URL : https://stackoverflow.com/questions/21075515/creating-tables-and-problems-with-primary-key-in-rails
'programing' 카테고리의 다른 글
워드프레스 응답 이미지 - 망막 화면에서 잘못된 이미지 선택 (0) | 2023.09.13 |
---|---|
스크롤 이벤트가 사용자에 의해 작성되었는지 여부 탐지 (0) | 2023.09.13 |
"치명적"을 해결하려면 어떻게 해야 할까요?비트버킷으로 푸시할 때 잘못된 자격 증명" 오류가 발생했습니까? (0) | 2023.09.13 |
워드프레스 후크 사전사후 업데이트 (0) | 2023.09.13 |
mariadb가 localhost 사용자를 인식하지 못함 (0) | 2023.09.13 |