Reputation: 3
I tried to do migration for federated table. Here's how my migration file looks like for the federated table:
<?php
use Phalcon\Db\Column;
use Phalcon\Db\Index;
use Phalcon\Di;
use Phalcon\Migrations\Migration;
class DBIAgentMigration_926 extends Migration
{
public function up()
{
$di = Di::getDefault();
// Check if the table already exists
if (!$di->getShared('dbi')->tableExists('Agent')) {
$this->createAgentTable();
}
}
public function down()
{
$di = Di::getDefault();
// Check if the table exists before attempting to drop it
if ($di->getShared('dbi')->tableExists('Agent')) {
$di->getShared('dbi')->dropTable('Agent');
}
}
private function createAgentTable()
{
$di = Di::getDefault();
$di->getShared('dbi')->createTable(
'Agent',
null,
[
'columns' => [
new Column(
'Id',
[
'type' => Column::TYPE_BIGINTEGER,
'notNull' => true,
'autoIncrement' => true,
]
),
new Column(
'Code',
[
'type' => Column::TYPE_VARCHAR,
'size' => 25,
'notNull' => false,
'default' => null,
]
),
new Column(
'Name',
[
'type' => Column::TYPE_VARCHAR,
'size' => 150,
'notNull' => false,
'default' => null,
]
),
new Column(
'Description',
[
'type' => Column::TYPE_VARCHAR,
'size' => 500,
'notNull' => false,
'default' => null,
]
),
new Column(
'RemoteId',
[
'type' => Column::TYPE_VARCHAR,
'size' => 250,
'notNull' => false,
'default' => null,
]
),
new Column(
'Enabled',
[
'type' => Column::TYPE_TINYINTEGER,
'notNull' => true,
'default' => 1,
]
),
new Column(
'TypeId',
[
'type' => Column::TYPE_VARCHAR,
'size' => 15,
'notNull' => false,
'default' => null,
]
),
new Column(
'StatusId',
[
'type' => Column::TYPE_VARCHAR,
'size' => 15,
'notNull' => false,
'default' => null,
]
),
new Column(
'Remarks',
[
'type' => Column::TYPE_TEXT,
'notNull' => false,
'default' => null,
]
),
new Column(
'SiteId',
[
'type' => Column::TYPE_BIGINTEGER,
'notNull' => true,
]
),
new Column(
'Modifier',
[
'type' => Column::TYPE_VARCHAR,
'size' => 25,
'notNull' => true,
]
),
new Column(
'ModifyDate',
[
'type' => Column::TYPE_DATETIME,
'notNull' => false,
'default' => null,
]
),
new Column(
'Options',
[
'type' => Column::TYPE_TEXT,
'notNull' => false,
'default' => null,
]
),
],
'indexes' => [
new Index('PRIMARY', ['Id'], 'PRIMARY'),
new Index('TypeId', ['TypeId']),
new Index('StatusId', ['StatusId']),
new Index('SiteId', ['SiteId']),
],
'options' => [
'ENGINE' => 'FEDERATED',
'charset' => 'utf8mb3',
'connection' => 'federated_main/Agent',
],
]
);
}
}
But when I tried to run it, I got this error:
Fatal Error: SQLSTATE[HY000]: General error: 1432 server name: '' doesn't exist!
I am really confused, because I have already created a server for it:
SELECT * FROM mysql.servers where Server_name = 'federated_main';
Server_name, Host, Db, Username, Password, Port, Socket, Wrapper, Owner
'federated_main', '127.0.0.1', 'main_db', '(username)', '(password)', '3306', '', 'mysql', ''
How to fix this problem?
I'm using:
Upvotes: 0
Views: 20