Не выходит подготовить запрос 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;
**
Мое решение, которое помогло:
**
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;
**
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab