Para borrar las tablas y empezar de cero:
Crear un archivo temporal llamado reset-tables.php dentro de la carpeta del plugin y luego acceder a https://tudominio.com/wp-content/plugins/industrie-imkerei-system/reset-tables.php
BORRAR EL ARCHIVO después de ejecutarlo.
<?php
// reset-tables.php - Ejecutar UNA SOLA VEZ y luego BORRAR el archivo
require_once('../../../wp-load.php');
global $wpdb;
$tables = array(
$wpdb->prefix . 'bienenvoelker',
$wpdb->prefix . 'imkerei_history'
);
foreach ($tables as $table) {
$wpdb->query("DROP TABLE IF EXISTS $table");
echo "Tabla $table eliminada.<br>";
}
// Reinstalar tablas
if (function_exists('ImkereiDatabase::install_tables')) {
ImkereiDatabase::install_tables();
echo "Tablas reinstaladas correctamente.";
} else {
require_once('includes/class-database.php');
ImkereiDatabase::install_tables();
echo "Tablas reinstaladas correctamente.";
}
?>
Esta es la estructura actual:
wp-content/plugins/industrie-imkerei-system/
│
├── industrie-imkerei-system.php
│
├── assets/
│ ├── style.css
│ ├── app.js
│ ├── map.js (opcional)
│ └── admin-style.css (crear si quieres)
│
├── includes/
│ ├── class-database.php
│ ├── class-ajax.php
│ ├── class-shortcodes.php
│ ├── class-qr.php
│ ├── class-history.php
│ ├── class-analytics.php
│ ├── class-priority.php
│ ├── class-inspections.php
│ ├── class-gps.php
│ ├── class-live-dashboard.php
│ ├── class-map.php
│ ├── class-medication.php
│ └── class-queen.php
│
└── img/
└── flecha.png (opcional)
SQL corregido para MySQL 8.0 (ejecutar en phpMyAdmin)
-- ============================================
-- CORREGIR TABLA wp_bienenvoelker
-- ============================================
-- Eliminar columnas duplicadas/obsoletas (una por una)
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `queen_year`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `queen_line`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `queen_status`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `medication_status`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `last_treatment`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `next_treatment`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `prioritaet`;
ALTER TABLE `wp_bienenvoelker` DROP COLUMN `medication`;
-- Añadir columnas si no existen (usar procedimiento para verificar)
-- Primero, verificar y añadir koenigin_jahr
SET @dbname = DATABASE();
SET @tablename = 'wp_bienenvoelker';
SET @columnname = 'koenigin_jahr';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' INT NULL AFTER letzte_kontrolle;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Añadir koenigin_genetik
SET @columnname = 'koenigin_genetik';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' TEXT NULL AFTER koenigin_jahr;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Añadir koenigin_notizen
SET @columnname = 'koenigin_notizen';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' TEXT NULL AFTER koenigin_genetik;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Añadir koenigin_letzte_ablage
SET @columnname = 'koenigin_letzte_ablage';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' DATETIME NULL AFTER koenigin_notizen;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Añadir koenigin_status
SET @columnname = 'koenigin_status';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' VARCHAR(20) DEFAULT ''AKTIV'' AFTER koenigin_letzte_ablage;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Añadir naechste_behandlung (si no existe)
SET @columnname = 'naechste_behandlung';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' DATE NULL AFTER gps_lng;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Actualizar valores nulos
UPDATE `wp_bienenvoelker` SET `koenigin_status` = 'AKTIV' WHERE `koenigin_status` IS NULL OR `koenigin_status` = '';
-- ============================================
-- CORREGIR TABLA wp_imkerei_history (añadir columna notes)
-- ============================================
SET @tablename = 'wp_imkerei_history';
SET @columnname = 'notes';
SET @preparedStatement = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) = 0,
CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' TEXT NULL AFTER device;'),
'SELECT 1;'
));
PREPARE stmt FROM @preparedStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- ============================================
-- CREAR TABLA DE TRATAMIENTOS (si no existe)
-- ============================================
CREATE TABLE IF NOT EXISTS `wp_imkerei_treatments` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`volk_id` VARCHAR(50) NOT NULL,
`medication_name` VARCHAR(100) NOT NULL,
`medication_type` VARCHAR(50),
`dosage` VARCHAR(100),
`application_date` DATE NOT NULL,
`next_application_date` DATE,
`expiry_date` DATE,
`status` VARCHAR(20) DEFAULT 'ACTIVE',
`notes` TEXT,
`created_by` VARCHAR(100),
`created_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `idx_volk_id` (`volk_id`),
INDEX `idx_application_date` (`application_date`),
INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
Schreibe einen Kommentar