From 9b6b5feb4f367ecf84300b89737d2a514ccdea19 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Jul 2014 21:38:20 +0200 Subject: [PATCH] Fix: ON DELETE CASCADE is forbidden. --- htdocs/install/mysql/migration/3.5.0-3.6.0.sql | 6 ++++-- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 6 +++--- .../install/mysql/tables/llx_expeditiondet_batch.key.sql | 2 +- htdocs/install/mysql/tables/llx_product_batch.key.sql | 2 +- test/phpunit/SqlTest.php | 8 ++++++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql index d12f3cb0840..3bc61ef314c 100644 --- a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql +++ b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql @@ -1073,7 +1073,6 @@ CREATE TABLE llx_product_batch ( batch varchar(30) DEFAULT NULL, qty double NOT NULL DEFAULT 0, import_key varchar(14) DEFAULT NULL, - KEY ix_fk_product_stock (fk_product_stock) ) ENGINE=InnoDB; CREATE TABLE llx_expeditiondet_batch ( @@ -1084,7 +1083,6 @@ CREATE TABLE llx_expeditiondet_batch ( batch varchar(30) DEFAULT NULL, qty double NOT NULL DEFAULT 0, fk_origin_stock integer NOT NULL, - KEY ix_fk_expeditiondet (fk_expeditiondet) ) ENGINE=InnoDB; -- Salary payment in tax module @@ -1108,6 +1106,10 @@ CREATE TABLE llx_payment_salary ( fk_user_modif integer )ENGINE=innodb; +ALTER TABLE llx_product_batch ADD INDEX ix_fk_product_stock (fk_product_stock); +ALTER TABLE llx_product_batch ADD CONSTRAINT fk_product_batch_fk_product_stock FOREIGN KEY (fk_product_stock) REFERENCES llx_product_stock (rowid); + + -- New 1074 : Stock mouvement link to origin ALTER TABLE llx_stock_mouvement ADD fk_origin integer; ALTER TABLE llx_stock_mouvement ADD origintype VARCHAR(32); diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index a3f128b8afa..7839fece341 100644 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -67,15 +67,15 @@ ALTER TABLE llx_societe ADD COLUMN localtax2_value double(6,3) after localtax2_a -- Added missing relations of llx_product -- fk_country -ALTER TABLE llx_product CHANGE COLUMN fk_country fk_country INTEGER NULL DEFAULT NULL; +ALTER TABLE llx_product MODIFY COLUMN fk_country INTEGER NULL DEFAULT NULL; UPDATE llx_product SET fk_country = NULL WHERE fk_country = 0; ALTER TABLE llx_product ADD INDEX idx_product_fk_country (fk_country); ALTER TABLE llx_product ADD CONSTRAINT fk_product_fk_country FOREIGN KEY (fk_country) REFERENCES llx_c_pays (rowid); -- fk_user_author -ALTER TABLE llx_product CHANGE COLUMN fk_user_author fk_user_author INTEGER NULL DEFAULT NULL; +ALTER TABLE llx_product MODIFY COLUMN fk_user_author INTEGER NULL DEFAULT NULL; ALTER TABLE llx_product ADD INDEX idx_product_fk_user_author (fk_user_author); -- fk_barcode_type -ALTER TABLE llx_product CHANGE COLUMN fk_barcode_type fk_barcode_type INTEGER NULL DEFAULT NULL; +ALTER TABLE llx_product MODIFY COLUMN fk_barcode_type INTEGER NULL DEFAULT NULL; UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type = 0; ALTER TABLE llx_product ADD INDEX idx_product_fk_barcode_type (fk_barcode_type); ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type (rowid); diff --git a/htdocs/install/mysql/tables/llx_expeditiondet_batch.key.sql b/htdocs/install/mysql/tables/llx_expeditiondet_batch.key.sql index 2c5428d6224..f0438b6316c 100644 --- a/htdocs/install/mysql/tables/llx_expeditiondet_batch.key.sql +++ b/htdocs/install/mysql/tables/llx_expeditiondet_batch.key.sql @@ -16,4 +16,4 @@ -- -- ============================================================================ ALTER TABLE llx_expeditiondet_batch ADD INDEX ix_fk_expeditiondet (fk_expeditiondet); -ALTER TABLE llx_expeditiondet_batch ADD CONSTRAINT fk_expeditiondet_batch_fk_expeditiondet FOREIGN KEY (fk_expeditiondet) REFERENCES llx_expeditiondet (rowid) ON DELETE CASCADE; +ALTER TABLE llx_expeditiondet_batch ADD CONSTRAINT fk_expeditiondet_batch_fk_expeditiondet FOREIGN KEY (fk_expeditiondet) REFERENCES llx_expeditiondet(rowid); diff --git a/htdocs/install/mysql/tables/llx_product_batch.key.sql b/htdocs/install/mysql/tables/llx_product_batch.key.sql index 6c184f2e1b3..7057d872df4 100644 --- a/htdocs/install/mysql/tables/llx_product_batch.key.sql +++ b/htdocs/install/mysql/tables/llx_product_batch.key.sql @@ -16,4 +16,4 @@ -- -- ============================================================================ ALTER TABLE llx_product_batch ADD INDEX ix_fk_product_stock (fk_product_stock); -ALTER TABLE llx_product_batch ADD CONSTRAINT fk_product_batch_fk_product_stock FOREIGN KEY (fk_product_stock) REFERENCES llx_product_stock (rowid) ON DELETE CASCADE; +ALTER TABLE llx_product_batch ADD CONSTRAINT fk_product_batch_fk_product_stock FOREIGN KEY (fk_product_stock) REFERENCES llx_product_stock (rowid); diff --git a/test/phpunit/SqlTest.php b/test/phpunit/SqlTest.php index 4cc5939b34d..f86c6fcc57b 100755 --- a/test/phpunit/SqlTest.php +++ b/test/phpunit/SqlTest.php @@ -149,11 +149,15 @@ class SqlTest extends PHPUnit_Framework_TestCase $result=strpos($filecontent,'`'); print __METHOD__." Result for checking we don't have back quote = ".$result."\n"; - $this->assertTrue($result===false); + $this->assertTrue($result===false, 'Found ON back quote. Bad.'); $result=strpos($filecontent,'int('); print __METHOD__." Result for checking we don't have 'int(' instead of 'integer' = ".$result."\n"; - $this->assertTrue($result===false); + $this->assertTrue($result===false, 'Found int(x) instead of integer. Bad.'); + + $result=strpos($filecontent,'ON DELETE CASCADE'); + print __METHOD__." Result for checking we don't have 'ON DELETE CASCADE' = ".$result."\n"; + $this->assertTrue($result===false, 'Found ON DELETE CASCADE. Bad.'); } return;