Help us understand the problem. What is going on with this article?

mysql 5.7でdb:createするとエラー

More than 5 years have passed since last update.

MySQL 5.7.4-m14をインストールしてrailsアプリを作成しようとしたらこんなエラーが

> rake db:migrate

Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: CREATE TABLE `tags` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `name` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB

5.7.3からかわってたみたい。
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-3.html
主キーは基本的にNOT NULLであるべきなのですが、以前のバージョンだと明示的に指定してやれば主キーの値としてNULL値が使用可能でした。5.7.3からはそれがエラーになるようです。
NULL値を指定したい場合はUNIQUEを指定すれば良いようです。
上記のエラーは、NOT NULLはもう冗長なので…ということのようです。

ActiveRecordのバグになるのかな、と思ってググってみるとcloseされてた。
https://github.com/rails/rails/issues/13203

コードみる限りNOT NULLの記述が消えてます。
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

現象が起きたrailsのバージョンは4.0.4
4.1.1にアップデートすれば再現しませんでした。

the40san
Game Backend/Build/Software Enginner
https://github.com/the40san
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした