[phpMyAdmin] テーブルを (データベース).(テーブル) にコピーするで失敗する






トップページへ

目次

事例1

事例2

 

事例1

発生場所:phpMyAdminの[操作]タブ。

発生時期:テーブルの「構造のみ」コピー(データを含まないコピー)を実行しようとした時。

内容:エラーメッセージが表示されコピーができなかった。

原因:phpMyAdminが自動生成したSQL文の間違い。

解決方法:SQL文を手動で直し、手動で実行したらコピーができました。

 

「原因その2」は後半です。

 

解決までの説明です

テーブルをコピーしようとしたら、次のメッセージが出てコピーができませんでした。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( ) , 日付項目 datetime NOT NULL DEFAULTcurrent_timestamp( ) ,

黄色い枠の中をコピペすると

「#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘( ) ,`日付項目` datetime NOT NULL DEFAULTcurrent_timestamp( ) ,」

という内容。

 

仕方がないので上のメッセージ文に表示された、「phpMyAdmin」が自動生成したSQL文もコピペし、関係のあるところを抜粋すると

「CREATE TABLE table_a.table_b (...

`first_time` datetime NOT NULL DEFAULTcurrent_timestamp( ) ,

`last_time` datetime NOT NULL DEFAULTcurrent_timestamp( ) ,

...) ENGINE = InnoDB DEFAULT CHARSET = utf8」

となっていました。

明らかに「NOT NULL DEFAULTcurrent_timestamp( )」はおかしいので、Tとcとの間に半角スペースを入れ

 

`first_time` datetime NOT NULL DEFAULT current_timestamp( ) ,

`last_time` datetime NOT NULL DEFAULT current_timestamp( ) ,

と修正したSQL文をSQLタブに貼りつけて[実行]したら

SQL文を修正して実行

成功(解決)しました。

実行したSQL文が成功した場合のメッセージ文
返り値が空でした (行数 0)

 

 


 

事例2

発生場所:phpMyAdminの[操作]タブ。

発生時期:テーブルの「構造のみ」コピー(データを含まないコピー)を実行しようとした時。

内容:エラーメッセージが表示されコピーができなかった。

原因:不明

解決方法:下記の方法でコピーができました。

 

エラーメッセージ

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘( ) ,

`日付時刻型の項目` datetime NOT NULL ,

`文字列型の項目` char( 50 ) DEFAULT NULL …’ at line 8

 

解決方法

1 コピー元のテーブルの日付時刻型の項目の「デフォルト値」である current_timestamp() を消して「なし」にして保存

2 テーブルのコピーを実行

3 コピー元テーブル、コピー先テーブルの日付時刻型の項目の「デフォルト値」に、current_timestamp() を再設定をして保存






関連記事
[MySQL] 個人的 逆引きリファレンス

[MySQL]エラー集

[phpMyAdmin]現在の選択には一意の列が含まれていません。グリッド編集、チェックボックス、編集、コピー、および削除機能は使用できません

[MySQL]備忘録