Migration - falsches SQL-Statement wird erstellt

Scaffolding, Configuration, Helper

Migration - falsches SQL-Statement wird erstellt

Beitragvon tosca am 27.08.2009, 16:47

Hallo,

ich mache meine ersten Versuch mit RoR und habe folgendes Problem:

Ich führe meine Migrations-Datei mit folgendem Inhalt auf einer MySQL-Datenbank aus:
Code: Alles auswählen
class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.integer :id
      t.string :username, :size => 100
      t.string :password, :size => 100
      t.string :email, :size => 100

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end


Dabei erhalte ich folgende Fehlermeldung von Rake:
Code: Alles auswählen
>rake db:migrate
(in D:/InstantRails/rails_apps/EHA)
== 1 CreateUsers: migrating ===================================================rake aborted!
-- create_table(:users)

Mysql::Error: #42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(11), `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL' at line 1: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY(11), `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL) ENGINE=InnoDB

(See full trace by running task with --trace)
>


Das Problem ist
Code: Alles auswählen
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY(11),
- hinter "PRIMARY KEY" steht noch mal eine Längenangabe. Wenn ich das Statement per Hand ohne diese "(11)" hinter "PRIMARY KEY" ausführe, funktioniert es. Wie bekomme ich Rails dazu, dass es das korrekte Statement erzeugt?
tosca
 
Beiträge: 2
Registriert: 27.08.2009, 16:39

Re: Migration - falsches SQL-Statement wird erstellt

Beitragvon tosca am 19.09.2009, 10:05

Also falls es jemanden interessiert:
In der Migrations-Datei darf die ID nicht explizit drin stehen - Rake erzeugt diese von selbst. Die Migrations-Datei muss also so aussehen:
Code: Alles auswählen
class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :username
      t.string :password
      t.string :email

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end
tosca
 
Beiträge: 2
Registriert: 27.08.2009, 16:39


Zurück zu Strukturierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron