Meine Version von Rails ist 4.0.0, meine Version von MySQL ist Ver 14.14 Distrib 5.7.9, für Win64 (x86_64). Ich betreibe eine ältere Version von Rails, da ich einige Konflikte mit dem MySQL bekommen habe, wie in meiner vorherigen Frage Here. (Check Kalelc ‚s genehmigt Antwort für meine Zuflucht)PRIMARY KEY Problem beim Erstellen von Tabellen in Rails mit Rake db: migrieren Befehl mit mysql
auf Lauf
rake db:migrate
bekomme ich folgende Fehler
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `first_name` varchar(25), `last_name` varchar(50), `email` varchar(255) DEFAULT '' NOT NULL, `password` varchar(40), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDBC:/Users/Lizanne/Documents/Code/Sites/simple_cms/db/migrate/20151116154434_create_users.rb:3:in `up'
C:in `migrate'
ActiveRecord::StatementInvalid: Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `first_name` varchar(25), `last_name` varchar(50), `email` varchar(255) DEFAULT '' NOT NULL, `password` varchar(40), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
C:/Users/Lizanne/Documents/Code/Sites/simple_cms/db/migrate/20151116154434_create_users.rb:3:in `up'
C:in `migrate'
Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead
C:/Users/Lizanne/Documents/Code/Sites/simple_cms/db/migrate/20151116154434_create_users.rb:3:in `up'
C:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Ich habe keine Werte auf NULL in meinem Code, hier ist der Code
Class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.column "first_name", :string, :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => "", :null => false
t.string "password", :limit => 40
t.timestamps
end
end
def down
drop_table :users
end
end
Dieser Code ist genau wie in den Tutorials gezeigt, die ich folge. Ich habe auch andere similar issues here auf Stack-Überlauf untersucht und den Ratschlag befolgt. Ich habe die monkey patch as suggested
# lib/patches/abastract_mysql_adapter.rb
class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end
versucht, eingefügt ich diese Datei in einen Ordner I genannt Flecken im lib meiner simple_cms Anwendung erstellt haben. Ich habe die Datei als "abstract_mysql_adapter.rb" gespeichert, wie im gleichen Affen-Patch vorgeschlagen. Ich habe meine environment.rb der simple_cms Anwendung mit dem folgenden
require File.expand_path('../../lib/patches/abstract_mysql_adapter.rb', __FILE__)
aktualisiert, wenn ich dann eine rake db laufen: wandern Befehl
rake aborted!
LoadError: cannot load such file -- C:/Users/Lizanne/Documents/Code/Sites/simple_cms/lib/patches/abstract_mysql_adapter.rb
C:/Users/Lizanne/Documents/Code/Sites/simple_cms/config/environment.rb:3:in `<top (required)>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
C:/Users/Lizanne/Dokumente/Code/Sites/simple_cms/lib/patches/abstract_mysql_adapter.rb ist definitiv der Weg zum Affen-Patch. Habe ich den Patch an die falsche Stelle gesetzt? Was mache ich hier falsch und kratze mich am Kopf? Entschuldigung, wenn das für einige offensichtlich ist, aber ich komme nach einer sehr langen Abstinenz wieder zum Coding und ich kann mich nicht mit dem Thema herumschlagen. Vielen Dank im Voraus für Sie :)
Versuchen Sie Ihren Affen-Patch Bearbeitung ' "int (11) auto_increment PRIMARY KEY NOT NULL"' – Undo
Hey Undo Danke für schnelle Antwort, nur versucht, und ich bekomme immer noch die gleichen Load Fehler – Aerosewall1
muss dieser Affe Patch in der Bibliothek der Anwendung oder die Lib von Schienen gespeichert werden – Aerosewall1