回答編集履歴

4

回答を追記

2016/09/03 16:15

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -161,3 +161,47 @@
161
161
  [https://dev.mysql.com/doc/refman/5.6/ja/show-create-table.html](https://dev.mysql.com/doc/refman/5.6/ja/show-create-table.html)
162
162
 
163
163
 
164
+
165
+ ---
166
+
167
+ # 追記2
168
+
169
+
170
+
171
+ > 今までは、SQLインスタンスまるまるエクスポートしていたのですが、試しにコピーしたいデータベースのみをエクスポートするとエラーが吐かれませんでした。
172
+
173
+
174
+
175
+ なるほど。
176
+
177
+ 恐らく(information_schema など)MySQL が勝手に(w)作成するスキーマの中に含まれていた何らかのオブジェクトが、インポート時にエラーになっていたのかもしれません。
178
+
179
+
180
+
181
+ 「コピーしたいデータベースのみをエクスポートするとエラーが吐かれません」
182
+
183
+ であれば、それで問題ないかと思います。
184
+
185
+
186
+
187
+ ---
188
+
189
+ で、
190
+
191
+ > ただ、SQL文のエラー結果は変わりませんでした。
192
+
193
+
194
+
195
+ そうすると、こちらはインポート時のエラーとは別の問題だと考えられます。
196
+
197
+ 出力されるエラーメッセージを確認してみてください。
198
+
199
+
200
+
201
+ > PHPからmysqliでSQL文を実行するとエラーが発生するようです。
202
+
203
+
204
+
205
+ ということなので、mysqli で問題の SQL文を実行(`$mysqli->query()`または`mysqli_query()`)した直後に`$mysqli->error`または`mysqli_error($link)`で、エラーメッセージを取得できるはずです。
206
+
207
+ [http://php.net/manual/ja/mysqli.error.php](http://php.net/manual/ja/mysqli.error.php)

3

項番が勝手に"1\."になってしまったのを修正

2016/09/03 16:15

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -132,9 +132,9 @@
132
132
 
133
133
  > To export data to a MySQL dump file
134
134
 
135
- (中略)
135
+ > (中略)
136
136
 
137
- 5. Set the Format to SQL.
137
+ > 5. Set the Format to SQL.
138
138
 
139
139
 
140
140
 

2

回答を追記

2016/09/03 14:42

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -69,3 +69,95 @@
69
69
  [https://cloud.google.com/sql/faq](https://cloud.google.com/sql/faq)
70
70
 
71
71
  > Google Cloud SQL does not support SUPER privileges,
72
+
73
+
74
+
75
+ # 追記
76
+
77
+
78
+
79
+ > ダウンロードしたSQLファイルで「SECURITY DEFINER」キーワードを探してみたのですが、存在が確認できませんでした。
80
+
81
+
82
+
83
+ そもそも、エクスポート元のインスタンスで VIEW を作成した記憶はありませんか?
84
+
85
+
86
+
87
+ 「SECURITY DEFINER」では、検索するキーワードとして長過ぎます。
88
+
89
+ スペースの数が違うだけでも、ヒットしなくなってしまいますので。
90
+
91
+
92
+
93
+ "DEFINER" または "INVOKER" だけで検索してみてください。
94
+
95
+
96
+
97
+ また、どうやらストアドプログラム (プロシージャー、関数、トリガー、およびイベント) も、ビューと同じように実行可能なユーザーを制限できるようです。
98
+
99
+ [https://dev.mysql.com/doc/refman/5.6/ja/stored-programs-security.html](https://dev.mysql.com/doc/refman/5.6/ja/stored-programs-security.html)
100
+
101
+ > すべてのストアドプログラム (プロシージャー、関数、トリガー、およびイベント) とビューには、MySQL アカウントを指名する DEFINER 属性を含めることができます。
102
+
103
+
104
+
105
+ 念のため、こちらも含まれていないか、確認してみてください。
106
+
107
+ それぞれの確認方法は、「MySQL プロシージャー 一覧」などで検索すると分かると思います。
108
+
109
+
110
+
111
+ ---
112
+
113
+ > Cloud SQLでデータベースをインポートする際は、コマンドではなく管理画面でインポートボタンを押すことで実行するので「mysqldump コマンドでインポートするデータを作成している。」については問題ないと思います。
114
+
115
+
116
+
117
+ マニュアルによると、
118
+
119
+ Cloud SQL では、エクスポートするデータの形式は"MySQL ダンプファイル"または"CSV"のいずれかを選択でき、
120
+
121
+ エクスポートする際、フォーマットに"SQL"を指定すると、"MySQL ダンプファイル"となるようです。
122
+
123
+
124
+
125
+ [https://cloud.google.com/sql/docs/import-export/exporting](https://cloud.google.com/sql/docs/import-export/exporting)
126
+
127
+ > Decide what file type you are creating: a MySQL dump file or a CSV file.
128
+
129
+
130
+
131
+
132
+
133
+ > To export data to a MySQL dump file
134
+
135
+ (中略)
136
+
137
+ 5. Set the Format to SQL.
138
+
139
+
140
+
141
+ おそらく、"MySQL ダンプファイル"はmysqldump コマンドを実行した場合と全く同じか、同じような形式のデータになっているはずです。
142
+
143
+ mysqldump コマンドで作成したデータも、実体は SQL 文ですので。
144
+
145
+
146
+
147
+ ---
148
+
149
+ それでも解決できない場合、可能であれば、実行に失敗する SQL文(どれか1つで結構です)の**全文**と、その SQL文がアクセスしている**全ての**テーブルのテーブル定義を質問に追記してください。
150
+
151
+
152
+
153
+ テーブル定義は、以下の SQL を実行すれば分かります。
154
+
155
+ ```sql
156
+
157
+ SHOW CREATE TABLE [テーブル名];
158
+
159
+ ```
160
+
161
+ [https://dev.mysql.com/doc/refman/5.6/ja/show-create-table.html](https://dev.mysql.com/doc/refman/5.6/ja/show-create-table.html)
162
+
163
+

1

曖昧な文言を修正

2016/09/03 14:40

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -56,7 +56,9 @@
56
56
 
57
57
  - DEFINER を明示せずビューを作成しても、mysqldump でエクスポートすると、ダンプファイル内では上述の 'DEFINER=' が明示される。
58
58
 
59
- - SUPER 権限を持っていないユーザーで自分以外のユーザーを DEFINER に指定しようとすると、ご質問のエラーメッセージが表示され、そのビューの作成**だけ**がスキップされる。
59
+ - SUPER 権限を持っていないユーザーで自分以外のユーザーを DEFINER に指定しようとすると、ご質問のエラーメッセージが表示される。
60
+
61
+ - ダンプファイルのインポートで↑の操作を行なった場合、そのビューの作成**だけ**がスキップされる(その他のテーブルは正常に作成される)。
60
62
 
61
63
 
62
64