tablas puede primary primaria llave foranea eliminar drop crear compuesta clave cambiar mysql ruby-on-rails primary-key mysql2

mysql - puede - Crear tablas y problemas con la clave principal en Rails



llave foranea compuesta mysql (3)

Desde la página de cambio de página de MySQL 5.7:

Las columnas en una PRIMARY KEY deben ser NOT NULL, pero si se declaran explícitamente como NULL no producen ningún error. Ahora se produce un error. Por ejemplo, se rechaza una instrucción como CREATE TABLE t (i INT NULL PRIMARY KEY). Lo mismo ocurre con sentencias ALTER TABLE similares. (Error # 13995622, error # 66987, error # 15967545, error # 16545198)

Cambios en MySQL 5.7.3 (2013-12-03, Milestone 13)

Este problema github.com/rails/rails/pull/13247 3 meses. No sé de qué versión de Rails va a ser parte de

parche de mono está https://github.com/rails/rails/pull/13247#issuecomment-32425844

EDITAR: Ha pasado más de un año que esta solución se fusionó en el maestro. Por lo tanto, debe ser parte de la última versión de Rails.

EDITAR: De hecho, la confirmación que corrige esto se puede encontrar en: https://github.com/yahonda/rails/commit/b6655885ef13cf8d1705dc9b5232846f0207febd , y muestra que la corrección se incluye en 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 . Si actualizar para al menos v4.1.0 es una opción para usted, entonces debería solucionar el problema.

Cuando trato de ejecutar el siguiente código en Rails usando Mysql2 como administrador de base de datos:

rake db:migrate

Obtengo el siguiente error:

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

¿Por qué recibo este error si la clave principal en una tabla por defecto NO es "nula"?

Código de migración, sin embargo:

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


Tuve el mismo problema antes, y lo resolví según https://github.com/rails/rails/pull/13247#issuecomment-32425844

Con Rails 2.3.5, MySQL versión 5.7.9 y mysql gem necesitas tener este bit como inicializador en config / initializers / abstract_mysql_adapter.rb:

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

Para mysql2, debería ser config / initializers / abstract_mysql2_adapter.rb:

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


Tuve este problema al ejecutar una aplicación Rails 4.0.x usando mysql 5.7.x. Pude arreglarlo actualizando a rails 4.2.x y actualizando mis gemas.

(Estoy seguro de que estos gemfiles necesitan trabajo, pero espero que sigan siendo útiles)

Antiguo archivo de gemas

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

Nuevo 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