Подготовка запроса MySQL (ALTER TABLE)

112
05 апреля 2021, 02:50

Не выходит подготовить запрос MySQL (ALTER TABLE) и сделать следующие.

Есть список таблиц, в таблицах есть Column Name (напр."post_date","post_content" и тд.) у них есть значения (напр."varchar","int" и тд.)

Нужно:

Пройтись по всем таблицам и найти в них Column Name (напр. "post_date","post_content") у которых значения "datetime" и создать запрос MySQL (ALTER TABLE).

Что в итоге должно получиться:

**

ALTER TABLE `wp_posts` 
CHANGE COLUMN `post_date` `post_date` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:01' ,
CHANGE COLUMN `post_date_gmt` `post_date_gmt` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:01';

** **

ALTER TABLE `wp_comments` 
    CHANGE COLUMN `comments_date` `comments_date` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:01' ,
    CHANGE COLUMN `comments_date_gmt` `comments_date` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:01';

**

И так далее пока не переберет всю базу.

Мой запрос переберает базу но не подставляет Column Name, не могу разобраться почему. Пробую разные вариации, но пока безуспешно :(

**

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CHANGE COLUMN `', d.`column_name`, d.`column_name`, '` DATETIME NOT NULL DEFAULT \'1970-01-01 00:00:01\';')
AS sqlcode
FROM `information_schema`.`TABLES` t, `information_schema`.`COLUMNS` d
WHERE t.`table_name` 
LIKE 'wp_%' 
AND d.`COLUMN_TYPE` = 'datetime'
LIMIT 0, 30;

**

Answer 1

Мое решение, которое помогло:

**

SELECT 
    CONCAT('ALTER TABLE `', `table_schema`, '`.`',`table_name`, ' CHANGE COLUMN `', `column_name`, '` `', `column_name`, ' `DATETIME NOT NULL DEFAULT \'1970-01-01 00:00:01\';')
AS sqlcode
FROM `information_schema`.`COLUMNS`
WHERE `table_name` LIKE 'wp_%' 
AND `COLUMN_TYPE` = 'datetime'
LIMIT 0, 30;

**

READ ALSO
Выбор строк содержащих данные другой строки

Выбор строк содержащих данные другой строки

подскажите, пожалуйста, в чем именно ошибка

68
Вызвать метод сервиса через интерфейс Laravel

Вызвать метод сервиса через интерфейс Laravel

Помогите разобраться со следующей задачей

82
Syntax error, unexpected T_VARIABLE

Syntax error, unexpected T_VARIABLE

В чём может быть моя ошибка?

80