Frage

Ich führe dieses Skript ständig aus und erhalte einen MySQL-Fehler:Sie haben einen Fehler in Ihrer SQL-Syntax.Sehen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, welche Syntax in der Nähe von „“ in Zeile 1 die richtige ist

Es scheint zu versuchen, eine leere Abfrage auszuführen, aber wenn ich mir mein Installationsskript ansehe, verstehe ich nicht, warum es das tun sollte.

Skript installieren:

<?php

Mage::log('Running Mdlogistics install script');
echo "installer running";

$installer = $this;

$installer->startSetup();

// Note that these addColumn() return the query results, rather than the 
// instance of the db connection object, so they can't be chained.
$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
    'ship_status', array(
        'type' => Varien_Db_Ddl_Table::TYPE_SMALLINT,
        'nullable' => false,
        'default' => 0,
        'comment' => 'True if this order has been shipped from the warehouse'
    ));

$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
    'edi_850_sent_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
        'nullable' => true,
        'default' => null,
        'comment' => 'Timestamp EDI 850 was sent to Highjump'
    ));

$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
    'edi_856_received_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null,
    array(
        'nullable' => true,
        'default' => null,
        'comment' => 'Timestamp EDI 856 was received from highjump'
    ));

$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
    'po_value', Varien_Db_Ddl_Table::TYPE_FLOAT, null,
    array(
        'nullable' => true,
        'default' => null,
        'comment' => 'Total amount sent to Binatone for this order'
    ));

// This one causes the errors, but I don't see anything wrong with it
$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
        'po_currency', Varien_Db_Ddl_Table::TYPE_VARCHAR, null,
        array(
            'nullable' => true,
            'default' => null,
            'comment' => 'Currency used for this order'
        ));


$installer->getConnection()
    ->addColumn($installer->getTable('sales/order'),
        'creditcard_fee', Varien_Db_Ddl_Table::TYPE_FLOAT, null,
        array(
            'nullable' => true,
            'default' => null,
            'comment' => 'Credit card expense for this order'
        )
    );

$installer->endSetup();

Die Fehler, die dadurch entstehen:

Installer läuft

PDOException Object
(
[message:protected] => SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
[string:Exception:private] =>
[code:protected] => 42000
[file:protected] => /var/www/html/lib/Zend/Db/Statement/Pdo.php
[line:protected] => 228
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /var/www/html/lib/Zend/Db/Statement/Pdo.php
[line] => 228
[function] => execute
[class] => PDOStatement
[type] => ->
[args] => Array
(
[0] => Array
(
)

)

)

[1] => Array
(
[file] => /var/www/html/lib/Varien/Db/Statement/Pdo/Mysql.php
[line] => 110
[function] => _execute
[class] => Zend_Db_Statement_Pdo
[type] => ->
[args] => Array
(
[0] => Array
(
)

)

)

[2] => Array
(
[file] => /var/www/html/app/code/core/Zend/Db/Statement.php
[line] => 291
[function] => _execute
[class] => Varien_Db_Statement_Pdo_Mysql
[type] => ->
[args] => Array
(
[0] => Array
(
)

)

)

[3] => Array
(
[file] => /var/www/html/lib/Zend/Db/Adapter/Abstract.php
[line] => 480
[function] => execute
[class] => Zend_Db_Statement
[type] => ->
[args] => Array
(
[0] => Array
(
)

)

)

[4] => Array
(
[file] => /var/www/html/lib/Zend/Db/Adapter/Pdo/Abstract.php
[line] => 238
[function] => query
[class] => Zend_Db_Adapter_Abstract
[type] => ->
[args] => Array
(
[0] => ALTER TABLE `sales_flat_order` ADD COLUMN `po_currency` varchar
[1] => Array
(
)

)

)

[5] => Array
(
[file] => /var/www/html/lib/Varien/Db/Adapter/Pdo/Mysql.php
[line] => 428
[function] => query
[class] => Zend_Db_Adapter_Pdo_Abstract
[type] => ->
[args] => Array
(
[0] => ALTER TABLE `sales_flat_order` ADD COLUMN `po_currency` varchar
[1] => Array
(
)

)

)

[6] => Array
(
[file] => /var/www/html/lib/Varien/Db/Adapter/Pdo/Mysql.php
[line] => 347
[function] => query
[class] => Varien_Db_Adapter_Pdo_Mysql
[type] => ->
[args] => Array
(
[0] => ALTER TABLE `sales_flat_order` ADD COLUMN `po_currency` varchar
)

)

[7] => Array
(
[file] => /var/www/html/lib/Varien/Db/Adapter/Pdo/Mysql.php
[line] => 848
[function] => raw_query
[class] => Varien_Db_Adapter_Pdo_Mysql
[type] => ->
[args] => Array
(
[0] => ALTER TABLE `sales_flat_order` ADD COLUMN `po_currency` varchar
)

)

[8] => Array
(
[file] => /var/www/html/.modman/Magento-MDLogistics-Inventory/Mdlogistics/sql/ebuynow_mdlogistics_setup/install-0.8.2.php
[line] => 54
[function] => addColumn
[class] => Varien_Db_Adapter_Pdo_Mysql
[type] => ->
[args] => Array
(
[0] => sales_flat_order
[1] => po_currency
[2] => varchar
[3] =>
[4] => Array
(
[nullable] => 1
[default] =>
[comment] => Currency used for this order
)

)

)

[9] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/Resource/Setup.php
[line] => 624
[args] => Array
(
[0] => /var/www/html/.modman/Magento-MDLogistics-Inventory/Mdlogistics/sql/ebuynow_mdlogistics_setup/install-0.8.2.php
)

[function] => include
)

[10] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/Resource/Setup.php
[line] => 421
[function] => _modifyResourceDb
[class] => Mage_Core_Model_Resource_Setup
[type] => ->
[args] => Array
(
[0] => install
[1] =>
[2] => 0.8.2
)

)

[11] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/Resource/Setup.php
[line] => 327
[function] => _installResourceDb
[class] => Mage_Core_Model_Resource_Setup
[type] => ->
[args] => Array
(
[0] => 0.8.2
)

)

[12] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/Resource/Setup.php
[line] => 235
[function] => applyUpdates
[class] => Mage_Core_Model_Resource_Setup
[type] => ->
[args] => Array
(
)

)

[13] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/App.php
[line] => 417
[function] => applyAllUpdates
[class] => Mage_Core_Model_Resource_Setup
[type] => ::
[args] => Array
(
)

)

[14] => Array
(
[file] => /var/www/html/app/code/core/Mage/Core/Model/App.php
[line] => 343
[function] => _initModules
[class] => Mage_Core_Model_App
[type] => ->
[args] => Array
(
)

)

[15] => Array
(
[file] => /var/www/html/app/Mage.php
[line] => 684
[function] => run
[class] => Mage_Core_Model_App
[type] => ->
[args] => Array
(
[0] => Array
(
[scope_code] =>
[scope_type] => store
[options] => Array
(
)

)

)

)

[16] => Array
(
[file] => /var/www/html/index.php
[line] => 88
[function] => run
[class] => Mage
[type] => ::
[args] => Array
(
[0] =>
[1] => store
)

)

)

[previous:Exception:private] =>
[errorInfo] => Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
)

)

Weitere Hinweise:

Fünf der sechs Tabellenänderungen funktionieren einwandfrei, auch wenn die Spalten bereits vorhanden sind, aber jedes Mal, wenn ich die Auskommentierung von „po_currency addColumn()“ entferne, erhalte ich die oben aufgeführten Fehler.Ich habe über den Code gebrütet und sehe wirklich nichts, was an diesem sehr einfachen Installationsskript falsch wäre.Irgendwelche Ideen?

War es hilfreich?

Lösung

Wie Sie in der ausgewählten Antwort sehen können Hier, TYPE_VARCHAR ist veraltet.Versuchen Sie es mit TYPE_TEXT.

Andere Tipps

Keine perfekte Lösung, aber ich habe das spezifische Problem umgangen, indem ich eine alternative Methode zur Angabe der fehlerhaften Spalte verwendet habe.

Das Ersetzen der po_currency-Änderung durch Folgendes hat das Problem behoben:

$installer->getConnection()
    ->addColumn($table, 'po_currency', 'varchar(3) default NULL');

Ich verstehe nicht, was ich vorher falsch gemacht habe, aber zumindest funktioniert das.Ich würde mich dennoch freuen, wenn mir jemand, der dies durchstöbert, das Problem erklären könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top