<?php
if (!defined('_GNUBOARD_')) exit;
global $write_table;
if ($write_table) {
// 1. [해결책] 테이블의 Row Format을 DYNAMIC으로 변경 (공간 확보의 첫 단계)
sql_query(" ALTER TABLE `{$write_table}` ROW_FORMAT=DYNAMIC ", false);
// 2. [해결책] 기존 여분 필드 중 일부를 VARCHAR에서 TEXT로 변경하여 행 사이즈 감소
// wr_1 ~ wr_10 중 사용하지 않거나 데이터가 긴 필드를 TEXT로 바꾸면 행 제한 계산에서 제외됩니다.
// 여기서는 안전하게 wr_9, wr_10을 TEXT로 변경하여 공간을 대폭 확보합니다.
sql_query(" ALTER TABLE `{$write_table}` MODIFY `wr_9` TEXT NOT NULL, MODIFY `wr_10` TEXT NOT NULL ", false);
// 3. 컬럼 추가 함수
if (!function_exists('add_column_if_not_exists')) {
function add_column_if_not_exists($table, $column, $query) {
$res = sql_query(" SHOW COLUMNS FROM `{$table}` LIKE '{$column}' ", false);
if ($res && sql_num_rows($res) == 0) {
return sql_query($query, true);
}
return false;
}
}
// 4. 필드 추가 실행 (사이즈가 큰 필드는 varchar(255) 대신 TEXT 권장)
add_column_if_not_exists($write_table, 'x2_ver', " ALTER TABLE `{$write_table}` ADD `x2_ver` varchar(10) NOT NULL DEFAULT '' AFTER `wr_10` ");
add_column_if_not_exists($write_table, 'x2_month', " ALTER TABLE `{$write_table}` ADD `x2_month` varchar(10) NOT NULL DEFAULT '' AFTER `x2_ver` ");
add_column_if_not_exists($write_table, 'x2_week', " ALTER TABLE `{$write_table}` ADD `x2_week` varchar(10) NOT NULL DEFAULT '' AFTER `x2_month` ");
add_column_if_not_exists($write_table, 'x2_day', " ALTER TABLE `{$write_table}` ADD `x2_day` varchar(10) NOT NULL DEFAULT '' AFTER `x2_week` ");
add_column_if_not_exists($write_table, 'x2_hour', " ALTER TABLE `{$write_table}` ADD `x2_hour` varchar(10) NOT NULL DEFAULT '' AFTER `x2_day` ");
add_column_if_not_exists($write_table, 'x2_min', " ALTER TABLE `{$write_table}` ADD `x2_min` varchar(10) NOT NULL DEFAULT '' AFTER `x2_hour` ");
// x2_ca2, x2_ca3, x2_coin 처럼 긴 문자열이 들어갈 가능성이 있는 곳은 TEXT로 생성하여 에러 방지
add_column_if_not_exists($write_table, 'x2_ca2', " ALTER TABLE `{$write_table}` ADD `x2_ca2` TEXT NOT NULL AFTER `x2_min` ");
add_column_if_not_exists($write_table, 'x2_ca3', " ALTER TABLE `{$write_table}` ADD `x2_ca3` TEXT NOT NULL AFTER `x2_ca2` ");
add_column_if_not_exists($write_table, 'x2_run', " ALTER TABLE `{$write_table}` ADD `x2_run` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_ca3` ");
add_column_if_not_exists($write_table, 'x2_coin', " ALTER TABLE `{$write_table}` ADD `x2_coin` varchar(100) NOT NULL DEFAULT '' AFTER `x2_run` ");
add_column_if_not_exists($write_table, 'x2_tag', " ALTER TABLE `{$write_table}` ADD `x2_tag` TEXT NOT NULL AFTER `x2_coin` ");
add_column_if_not_exists($write_table, 'x2_sell', " ALTER TABLE `{$write_table}` ADD `x2_sell` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_tag` ");
add_column_if_not_exists($write_table, 'x2_all_day_1', " ALTER TABLE `{$write_table}` ADD `x2_all_day_1` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_sell` ");
add_column_if_not_exists($write_table, 'x2_interval', " ALTER TABLE `{$write_table}` ADD `x2_interval` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_1` ");
add_column_if_not_exists($write_table, 'x2_all_day_2', " ALTER TABLE `{$write_table}` ADD `x2_all_day_2` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_interval` ");
add_column_if_not_exists($write_table, 'x2_interval_2', " ALTER TABLE `{$write_table}` ADD `x2_interval_2` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_2` ");
add_column_if_not_exists($write_table, 'x2_all_day_3', " ALTER TABLE `{$write_table}` ADD `x2_all_day_3` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_interval_2` ");
add_column_if_not_exists($write_table, 'x2_interval_3', " ALTER TABLE `{$write_table}` ADD `x2_interval_3` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_3` ");
add_column_if_not_exists($write_table, 'x2_down_price', " ALTER TABLE `{$write_table}` ADD `x2_down_price` varchar(20) NOT NULL DEFAULT '0' AFTER `x2_interval_3` ");
add_column_if_not_exists($write_table, 'x2_all_day_4', " ALTER TABLE `{$write_table}` ADD `x2_all_day_4` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_down_price` ");
add_column_if_not_exists($write_table, 'x2_interval_4', " ALTER TABLE `{$write_table}` ADD `x2_interval_4` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_4` ");
add_column_if_not_exists($write_table, 'x2_all_day_5', " ALTER TABLE `{$write_table}` ADD `x2_all_day_5` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_interval_4` ");
add_column_if_not_exists($write_table, 'x2_interval_5', " ALTER TABLE `{$write_table}` ADD `x2_interval_5` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_5` ");
add_column_if_not_exists($write_table, 'x2_all_day_6', " ALTER TABLE `{$write_table}` ADD `x2_all_day_6` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_interval_5` ");
add_column_if_not_exists($write_table, 'x2_interval_6', " ALTER TABLE `{$write_table}` ADD `x2_interval_6` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_6` ");
add_column_if_not_exists($write_table, 'x2_profit_ratio', " ALTER TABLE `{$write_table}` ADD `x2_profit_ratio` varchar(20) NOT NULL DEFAULT '0' AFTER `x2_interval_6` ");
add_column_if_not_exists($write_table, 'x2_all_day_7', " ALTER TABLE `{$write_table}` ADD `x2_all_day_7` tinyint(4) NOT NULL DEFAULT '0' AFTER `x2_profit_ratio` ");
add_column_if_not_exists($write_table, 'x2_interval_7', " ALTER TABLE `{$write_table}` ADD `x2_interval_7` int(11) NOT NULL DEFAULT '0' AFTER `x2_all_day_7` ");
add_column_if_not_exists($write_table, 'x2_loss_ratio', " ALTER TABLE `{$write_table}` ADD `x2_loss_ratio` varchar(20) NOT NULL DEFAULT '0' AFTER `x2_interval_7` ");
}
?>