Migration Rake : primary key(11) fait bugger la r equête


#1

Alors, j’ai préparé une migration rake avec (entre autres) la table :

create_table :player  do |t|
  t.column :id,              :integer
  t.column :login,           :string,    :null => false
  t.column :password,        :string,    :null => false, :limit => 

32
t.column :email, :string, :null => false
t.column :joined, :datetime
t.column :lastup, :timestamp
t.column :online, :boolean
end

Je lance la migration, après quelques corrections dans ma configuration,
je
bloque sur :

== RubyThud: migrating

– create_table(:player)
rake aborted!
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), login varchar(255) NOT NULL, password varchar(32) NOT
NULL,
email va’ at line 1: CREATE TABLE player (id int(11) DEFAULT NULL
auto_increment PRIMARY KEY(11), login varchar(255) NOT NULL,
password
varchar(32) NOT NULL, email varchar(255) NOT NULL, joined datetime
DEFAULT NULL, lastup datetime DEFAULT NULL, online tinyint(1)
DEFAULT
NULL) ENGINE=InnoDB

Et je me demande pourquoi il y a un “PRIMARY KEY(11)” dans la requête.
Normalement primary key se suffit à lui-même en mysql.

Quelqu’un sait ? C’est un bug de rake ? Si oui il y a eu une correction
?


Michel B.


#2

On 6/24/07, Michel B. removed_email_address@domain.invalid wrote:

end

La colonne id est inutile. En effet, elle est généré automatiquement
lors d’un create_table dans une migration


Cyril M.


#3

Ok, merci. J’essaye sans.

On 6/24/07, Cyril M. removed_email_address@domain.invalid wrote:

  t.column :joined,          :datetime


Michel B.


#4

Ca marche. Merci encore.

On 6/24/07, Michel B. removed_email_address@domain.invalid wrote:

  t.column :login,           :string,    :null => false

lors d’un create_table dans une migration


Cyril M.


Michel B.


Michel B.


#5

Michel :

Je lance la migration, après quelques corrections dans ma configuration, je
auto_increment PRIMARY KEY(11),
create_table va te créer automatiquement une clé primaire id
sauf si tu lui spécifie de ne pas le faire (:id => false). Or
tu as également déclaré une colonne id.

Rails va te générer le id int(11) DEFAULT NULL auto_increment PRIMARY
KEY
ta déclaration supplémentaire va rajouter le (11). D’où la belle
erreur de syntaxe MySQL.

Quelqu’un sait ? C’est un bug de rake ? Si oui il y a eu une correction ?

D’autre part, si tu peux/souhaites suivre les conventions de
Rails, le nom de ta table sera ‘players’.

-- Jean-François.


À la renverse.


#6

C’est justement ce que je souhaite. Merci beaucoup.

On 6/25/07, Jean-François removed_email_address@domain.invalid wrote:

  t.column :online,          :boolean

Mysql::Error: #42000You have an error in your SQL syntax; check the
tu as également déclaré une colonne id.
Rails, le nom de ta table sera ‘players’.

-- Jean-François.


À la renverse.


Michel B.