[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( ) ,」
という内容。
仕方がないので上のメッセージ文に表示された、「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タブに貼りつけて[実行]したら
成功(解決)しました。

事例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() を再設定をして保存