既存テーブルにPrimary Key追加 [MySQL]
MySQLの既存テーブルにPrimary Keyが無く不都合があったのでPrimary Keyを追加する必要が生じた。既存テーブルに
ALTER TABLE table元 ADD data_ID int FIRST; ALTER TABLE table元 ADD PRIMARY KEY (data_ID); ALTER TABLE table元 CHANGE data_ID data_ID INT(11) NOT NULL AUTO_INCREMENT;としたら
Data truncated for column 'data_ID' at row 1でエラー。 結局一旦"table元"の構造(スキマー)を"table写"にコピーしてこのテーブルにPrimary keyを追加、"table元"からデータのみをコピーすることでPrimary keyを追加することができた。解決までに時間が掛かったので忘れないように、詳細手順を記載。 -- Primary Keyの追加
CREATE TABLE table写 LIKE table元; ALTER TABLE table写 ADD data_ID int FIRST; ALTER TABLE table写 ADD PRIMARY KEY (data_ID); ALTER TABLE table写 CHANGE data_ID data_ID INT(11) NOT NULL AUTO_INCREMENT; ALTER TABLE table元 ADD data_ID int FIRST; INSERT INTO table写 SELECT * FROM table元; DROP TABLE table元; ALTER TABLE table写 RENAME TO table元;
IE11で:focusが効かない [Windows]
Windows7のIE11でinputのfocus時に背景色を変更しようとしたが、IE11で動作しない。IE8からサポートしているはずで、WindowsXP上のIE8で確認したら上手く動作する。サンプルがあるサイトをIE11で確認すると上手くいくが、HTMLをコピーして自分のサイトで実行すると上手くいかない。不思議に思い
echo "rev: ".$_SERVER['HTTP_USER_AGENT'];
でブラウザの情報を表示してみた。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;
compatible;MSIE 7.0でMSIE7.0互換表示となっている。これではfocusが上手くいかない。
とりあえずインストールされているブラウザの最新版の互換性表示にしてみると確かに上手くいった。しかし、ブラウザの情報が
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;
のままであるため、ブラウザ情報のIE版数で切り替えている箇所の表示がずれてしまう。
なぜ互換表示なの?と思いブラウザの互換表示の設定箇所をみてみると、”イントラネットを互換性表示にする(I)”のチェックボックスがONになっていた。互換性表示の設定を変更した記憶がないのに。。
下記手順で標準表示に変更したところ全て上手くいきました。
ツール(T)→互換性表示(B)→イントラネットを互換性表示にする(I)のチェックボックスをOFF
ブラウザの情報(IE11)
標準表示: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 互換表示: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
IEは難しい!!