ping 表を改造する

<< 戻る   トップ >>

久しく SQL などいじってないので、なにかチョンボしそうではあるが、主キーが全く存在していない ping 表に id を追加し、AUTO INCREMENT 属性を加えた上に主キーとする。

MariaDB [nanban_web]> describe ping;
+---------+---------+------+-----+---------+-------+
| Field   | Type    | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| article | int(11) | YES  |     | NULL    |       |
| url     | text    | YES  |     | NULL    |       |
+---------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)

MariaDB [nanban_web]> ALTER TABLE ping ADD id INT UNSIGNED NOT NULL
    -> AUTO_INCREMENT, ADD PRIMARY KEY (id);
Query OK, 75 rows affected (0.01 sec)              
Records: 75  Duplicates: 0  Warnings: 0

MariaDB [nanban_web]> describe ping;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| article | int(11)          | YES  |     | NULL    |                |
| url     | text             | YES  |     | NULL    |                |
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
+---------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

いちおう構造はできたっぽい。中身を確認してみると

MariaDB [nanban_web]> select * from ping;
+---------+-------------------------------------------+----+
| article | url                                       | id |
+---------+-------------------------------------------+----+
|     300 | http://museo.atso-net.jp/nanban/tb/300    |  1 |
|     347 | http://museo.atso-net.jp/nanban/tr/347    |  2 |
|     362 | http://museo.atso-net.jp/nanban/tr/363    |  3 |
|     362 | http://museo.atso-net.jp/nanban/tr/364    |  4 |
... 以下略                   
 

でオッケー。続いて JPA Tool で作成した、Ping.java を修正する。Trackback.java のマネをして @Id private int id; を追加。これで "The entity has no primary key attribute defined" なエラーは解消するものの、替わりに "Column 'id' cannot be resolved on table 'ping'" だって。MariaDB と接続し直せば誤解が解けるような気がする。 "

なんとかエラーは解消したのだが、"Java EE" パーセクティブに変更するなどしてなんとか下のパネル(名称忘れた)に "Data Source Explorer" を表示し、そこの "Database Connections" でデータベースを切断したり接続したり Refresh したり、ソースファイルに @Column(Name="id") アノテーションを追加して保存したりしてようやく解消した。あとで @Column アノテーションを消したもエラーは復活しなかったので、もしかしたら Ping.java を強制保存/再コンパイルすればよかったんだろうか。状況としては「どうして直ったのかわからないが、とにかく直った。たぶん MariaDB の接続リフレッシュとソースファイル再保存」で十分である。

とにかく、春から燻っていた "The entity has no primary key attribute defined" 問題はこれにて決着。いよいよガラスの魚で遊ぶ。


作成: 2018-09-06 16:21:32.0更新: 2018-09-06 16:33:53.0
http://museo-anonimo.jp/nanban/?id=1352,http://museo-anonimo.jp/nanban/tr/1352