loopback-component-migrate icon indicating copy to clipboard operation
loopback-component-migrate copied to clipboard

Migrations table not being created with MySQL datasource

Open antonsamper opened this issue 9 years ago • 7 comments

It looks like this components is currently only working properly when using the in memory datasource.

I have tried changing the datasource to MySQL and i'm getting errors because the table doesnt exist.

antonsamper avatar Feb 07 '16 11:02 antonsamper

Gry @antonsamper Which table doesn't exist? Can you paste the specific error that you are seeing? Thanks.

mrfelton avatar Feb 07 '16 12:02 mrfelton

It's the table that saves the migration information. db name is test

Error retrieving migrations:
Error: ER_NO_SUCH_TABLE: Table 'test.migration' doesn't exist
    at Query.Sequence._packetToError (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14)
    at Query.ErrorPacket (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:83:18)
    at Protocol._parsePacket (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/Protocol.js:280:23)
    at Parser.write (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/Parser.js:73:12)
    at Protocol.write (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/Connection.js:96:28)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Socket.Readable.push (_stream_readable.js:110:10)
    --------------------
    at Protocol._enqueue (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/Protocol.js:141:48)
    at PoolConnection.query (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/Connection.js:201:25)
    at runQuery (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/lib/mysql.js:146:16)
    at executeWithConnection (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/lib/mysql.js:188:7)
    at Ping.onOperationComplete (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/Pool.js:99:5)
    at Ping.<anonymous> (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback/node_modules/continuation-local-storage/context.js:76:17)
    at bound (domain.js:287:14)
    at Ping.runBound [as _callback] (domain.js:300:12)
    at Ping.Sequence.end (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
    at Ping.Sequence.OkPacket (/Users/antonsamper/WebstormProjects/test-project/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:105:8)
No new migrations to run.

antonsamper avatar Feb 07 '16 17:02 antonsamper

@mrfelton are you able to replicate the problem?

antonsamper avatar Feb 09 '16 22:02 antonsamper

I'm having the same problem, the model Migration is not been created

gholias avatar Feb 17 '16 18:02 gholias

when will these changes be added to master? im having the same problem

frzkhan avatar Feb 04 '17 10:02 frzkhan

Same problem occurs with the mssql connector:

Error retrieving migrations: RequestError: Invalid object name 'dbo.Migration'. at C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\lib\tedious.js:739:17 at emitOne (events.js:96:13) at Connection.emit (events.js:188:7) at Parser.<anonymous> (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\connection.js:204:16) at emitOne (events.js:96:13) at Parser.emit (events.js:188:7) at Parser.<anonymous> (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\token\token-stream-parser.js:42:15) at emitOne (events.js:96:13) at Parser.emit (events.js:188:7) at readableAddChunk (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:210:18) at Parser.Readable.push (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:169:10) at Parser.Transform.push (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:123:32) at doneParsing (C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\token\stream-parser.js:87:17) at C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\token\infoerror-token-parser.js:46:5 at C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\token\infoerror-token-parser.js:13:19 at C:\Users\Administrator\Source\Repos\BBNEXT\node_modules\loopback-connector-mssql\node_modules\mssql\node_modules\tedious\lib\token\stream-parser.js:224:9 No new migrations to run. undefined

phil-hawkins avatar Feb 27 '17 01:02 phil-hawkins

Hi, for everyone running into the same issue, you could just run autoupdate like so:

let dataSource = app.dataSources['mysql']
dataSource.autoupdate('Migration', function(error) { ... })

Here's a brief example, you could place it in server/boot/migrations.js:

const loopback = require('loopback')

module.exports = function (app, next) {
  const Migration = loopback.getModel('Migration');
  if (!Migration) {
    console.log('Model "Migration" is missing, won\'t execute migrations!');
    return next();
  }

  // Make sure Migrations table exists, "autoupdate" won't touch any data.
  const dataSource = app.dataSources.mysql;
  dataSource.autoupdate('Migration', function (error) {
    // FIXME: Handle errors.
    Migration.migrate('up', function(error) {
      // FIXME: Handle errors.
      console.log('Migrations done.');
      next();
    });
  });

};

boeserwolf avatar Nov 27 '17 13:11 boeserwolf