2017-08-30 11 views
0

テーブルの列が1つしか存在しない場合は削除する必要がありますが、いくつかの問題があります。それアウトはテーブルの列が存在する場合は削除します(SQLSTATE [42000]構文エラーまたはアクセス違反)

An error occurred when processing the migration: 
    Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_d' at line 1 

は、これは私がABになりますので、何をすべきか

IF (EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_db_Name' AND TABLE_NAME = 'my__table' AND COLUMN_NAME = 'currency_format')) 
BEGIN 
    ALTER TABLE 'my__table' DROP COLUMN currency_format; 
END 

のphpMyAdminのSQLコンソールもenter image description here

のでエラー を報告している私のクエリ、ある理由このクエリを実行するには? ありがとうございました!

答えて

0

私は次のコードでの回避策を作り、その今

set @exist_Check := (
select count(*) from information_schema.columns 
where TABLE_NAME='my__table' 
and COLUMN_NAME='currency_format' 
and TABLE_SCHEMA='my_db_Name' 
); 
set @sqlstmt := if(@exist_Check>0,'alter table my__table drop column currency_format', 'select ''''') ; 
prepare stmt from @sqlstmt ; 
execute stmt ; 
作業します
0

すると、あなたのALTER TABLEあなたが使用することができ

0

であなたのテーブル名をUNQUOTEしてください:

IF (SELECT 1=1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_db_Name' AND TABLE_NAME = 'my__table' AND COLUMN_NAME = 'currency_format') THEN 
BEGIN 
    ALTER TABLE my__table DROP COLUMN currency_format; 
END IF; 
関連する問題