diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-03-13 18:14:47 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-03-13 18:14:47 +0900 |
| commit | c82ba8479ca3d67750a2efa21dfc5475d3826912 (patch) | |
| tree | 7c503298cdd853170c3df3340b4451bb637b59bb | |
| parent | ef340c3527f3061b30c2c4082823be79809045f8 (diff) | |
modified bin/ddb
| -rwxr-xr-x | ar/.local/bin/ddb | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/ar/.local/bin/ddb b/ar/.local/bin/ddb index ae2ef8d..2dec830 100755 --- a/ar/.local/bin/ddb +++ b/ar/.local/bin/ddb @@ -273,10 +273,11 @@ if [ "$MIGRATE_MODE" = 1 ]; then case "$confirm" in y|Y|yes|YES) - # Wrap SQL in transaction for safety - query="BEGIN; -$(cat "$sql_file_path") -COMMIT;" + # Write wrapped SQL to temp file to avoid ARG_MAX limit on large migrations + QUERY_TMP="/tmp/ddb_query_$$.sql" + trap 'rm -f "$TMP_FILE" "$SQL_FILES_TMP" "$QUERY_TMP"' EXIT + { printf 'BEGIN;\n'; cat "$sql_file_path"; printf '\nCOMMIT;\n'; } > "$QUERY_TMP" + query="__MIGRATE__" ;; *) echo "[INFO] Migration cancelled" @@ -333,7 +334,15 @@ else db_name=$(docker exec "$container_id" sh -c 'echo $POSTGRES_DB' 2>/dev/null || echo "postgres") user=$(docker exec "$container_id" sh -c 'echo $POSTGRES_USER' 2>/dev/null || echo "postgres") - if docker exec -it "$container_id" psql -U "$user" -d "$db_name" -c "$query"; then + if [ "$MIGRATE_MODE" = 1 ]; then + docker exec -i "$container_id" psql -U "$user" -d "$db_name" < "$QUERY_TMP" + psql_exit=$? + else + docker exec -it "$container_id" psql -U "$user" -d "$db_name" -c "$query" + psql_exit=$? + fi + + if [ "$psql_exit" -eq 0 ]; then echo "" echo "[SUCCESS] Query executed successfully" else @@ -347,10 +356,18 @@ else user=$(docker exec "$container_id" sh -c 'echo $MYSQL_USER' 2>/dev/null || echo "root") password=$(docker exec "$container_id" sh -c 'echo $MYSQL_ROOT_PASSWORD' 2>/dev/null || echo "") - if [ -n "$password" ]; then - result=$(docker exec -it "$container_id" mysql -u"$user" -p"$password" ${db_name:+-D "$db_name"} -e "$query") + if [ "$MIGRATE_MODE" = 1 ]; then + if [ -n "$password" ]; then + docker exec -i "$container_id" mysql -u"$user" -p"$password" ${db_name:+-D "$db_name"} < "$QUERY_TMP" + else + docker exec -i "$container_id" mysql -u"$user" ${db_name:+-D "$db_name"} < "$QUERY_TMP" + fi else - result=$(docker exec -it "$container_id" mysql -u"$user" ${db_name:+-D "$db_name"} -e "$query") + if [ -n "$password" ]; then + docker exec -it "$container_id" mysql -u"$user" -p"$password" ${db_name:+-D "$db_name"} -e "$query" + else + docker exec -it "$container_id" mysql -u"$user" ${db_name:+-D "$db_name"} -e "$query" + fi fi if [ $? -eq 0 ]; then @@ -365,7 +382,13 @@ else mongo) db_name=$(docker exec "$container_id" sh -c 'echo $MONGO_INITDB_DATABASE' 2>/dev/null || echo "test") - if docker exec -it "$container_id" mongosh "$db_name" --eval "$query"; then + if [ "$MIGRATE_MODE" = 1 ]; then + docker exec -i "$container_id" mongosh "$db_name" < "$QUERY_TMP" + else + docker exec -it "$container_id" mongosh "$db_name" --eval "$query" + fi + + if [ $? -eq 0 ]; then echo "" echo "[SUCCESS] Query executed successfully" else |
