質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

4871閲覧

MYSQLでint型からbigint型に変換した際AUTO_INCREMENTが消えてしまう理由は何ですか?

kaito2414

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/04/30 09:34

編集2020/04/30 09:47

MYSQLでint型からbigint型に変換した際AUTO_INCREMENTが消えてしまう理由は何ですか?

SQl

1CREATE TABLE `users` ( 2 `id` int(9) NOT NULL COMMENT 'ユーザーID', 3 `name` varchar(100) DEFAULT NULL COMMENT 'ユーザー名', 4 `loginid` varchar(100) DEFAULT NULL COMMENT 'ログインID', 5 `passwd` varchar(100) DEFAULT NULL COMMENT 'パスワード', 6 `passwd_date` datetime DEFAULT NULL COMMENT 'パスワード変更日時', 7 `authority` int(9) DEFAULT NULL COMMENT 'ユーザー権限(10:編集担当 91:公開担当 92:記事管理 99:システム管理者)', 8 `thumb_img_path` varchar(1000) DEFAULT NULL COMMENT 'サムネイル画像', 9 `syozoku` varchar(255) DEFAULT NULL COMMENT '所属', 10 `katagaki` varchar(255) DEFAULT NULL COMMENT '肩書', 11 `syoukaibun` varchar(1000) DEFAULT NULL COMMENT '紹介文', 12 `option` text COMMENT 'オプション', 13 `wrt_user_id` int(9) DEFAULT NULL COMMENT '書込みユーザーID', 14 `created` datetime DEFAULT NULL COMMENT '作成日付', 15 `modified` datetime DEFAULT NULL COMMENT '更新日付', 16 `deleted` datetime DEFAULT NULL COMMENT '削除日付' 17) ENGINE=InnoDB DEFAULT CHARSET=utf8; 18 19ALTER TABLE `users` 20 ADD PRIMARY KEY (`id`); 21 22ALTER TABLE `users` 23 MODIFY `id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'ユーザーID'; 24

変更文

SQL

1-- 2-- users 3-- 4-- alter table users drop column thumb_img_path; 5-- alter table users drop column katagaki; 6-- alter table users drop column syoukaibun; 7-- alter table users drop column option; 8-- alter table users drop column wrt_user_id; 9-- alter table users add column hided datetime comment '非表示日'; 10alter table users change column syozoku part varchar(100) comment '部署'; 11-- alter table users add column email mediumtext comment 'メールアドレス(複数登録)' after part; 12alter table users modify column id bigint NOT NULL; <<<<この文を入れるとAUTO_INCREMENTが消えます 13alter table users modify column passwd varchar(255); 14alter table users AUTO_INCREMENT = 1;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/04/30 09:37

元のテーブルにもAUTO_INCREMENTがついていないように見えますが、気のせいですか?
kaito2414

2020/04/30 09:47

すみません、記載ミスです。 追加しました。
guest

回答2

0

ベストアンサー

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.7 ALTER TABLE 構文 に、

CHANGE または MODIFY を使用する場合は、column_definition に、データ型および PRIMARY KEY や UNIQUE などのインデックス属性以外の、新しいカラムに適用されるすべての属性を含める必要があります。元の定義には存在するが、新しい定義として指定されていない属性は引き継がれません。

とあるので、そういう仕様なのでしょう。ALTER TABLE 文に AUTO_INCREMENT を追加すれば良いと思います。

sql

1alter table users modify column id bigint NOT NULL AUTO_INCREMENT;

AUTO_INCREMENT を指定しなくても勝手に引き継がれると、AUTO_INCREMENT 属性を取り消したい時に困るのでしょう。

投稿2020/04/30 18:17

hoshi-takanori

総合スコア7901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

AUTO_INCREMENTがテーブルの定義にありませんから、別途ALTER TABLE CHNGEで行っているのですよね?

AUTO_INCREMENTはテーブルとは別管理されていて、その元になる項目の属性が変更されたので削除されるのは別に不思議な事ではありません。

従来は、AUTO_INCREMENT属性を外してからしか変更できなかったはずなので、多少手間が減るようになっているかと思います。

投稿2020/04/30 09:50

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaito2414

2020/04/30 09:55

ということは、CREATEの時点で、id を int型ではなく、bigint型で宣言すればよろしいということでしょうか?
sazi

2020/04/30 18:49 編集

createなら消えないという事は無いでしょう。 要はAUTO_INCREMENTの元を変更するのだからリセットされても当然と考えるべきです。 なので値を残したいのなら、テーブルをコピーしておいて、そこから追加するような方法を取るとか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問