Ben, I have seen the “invalid database type” error on Linux because of a case error. Make sure you use “mysql” as the database type, not “MySQL” or anything else with upper case letters. LiveCode is not case-sensitive, but Linux is.
Hope this helps. Devin > On Feb 1, 2021, at 2:32 PM, Ben Rubinstein via use-livecode > <use-livecode@lists.runrev.com> wrote: > > Update. I have managed to get access to the Rev database external by > explicitly setting the `externals` property of the stack before saving it (on > Mac) to the full path on the linux machine to `revdb.so`. > > Consequently the functions such as `revOpenDatabases` and `revOpenDatabase` > no longer throw error 219. Hurrah. Indeed `externalCommands` and > `externalFunctions` now list all the expected commands and functions of the > database library. > > This is obviously an appalling solution, since it relies on me knowing the > exact path to the LiveCode bundle on the destination machine. (My > recollection from a decade or so ago is that this property has to already be > set at the time that the stack is opened, i.e. it can't be set dynamically. > This may be erroneous.) However, it will get me going for now. > > Now my issue is that when the code tries to open the database, > `revOpenDatabase` returns "revdberr,invalid database type". That suggests > that the drivers aren't found. > > I've tried to get past this using `revSetDatabaseDriverPath`. > > The documentation says >> Use the revSetDatabaseDriverPath command if you want to place the database >> drivers your application uses somewhere other than the same folder as the >> application. > In fact the drivers are in the standard location, so this shouldn't be > needed, but hey... I started by reporting `revGetDatabaseDriverPath` - but > calling that causes LiveCode to immediately exit on signal 11. (This was in a > try-catch block, but that doesn't stop it crashing out.) > > However, after using `revSetDatabaseDriverPath`, `revGetDatabaseDriverPath` > no longer crashes but faithfully reports the value set. > > Unfortunately, this doesn't seem to help - although "set the defaultFolder to > revGetDatabaseDriverPath()/put the files" does list the folder which includes > dbmysql.so - revOpenDatabase still returns "revdberr,invalid database type". > > Any suggestions gratefully received! > > Ben > > > On 01/02/2021 20:24, Ben Rubinstein via use-livecode wrote: >> Hi Mark, >> > "error in function handler" is a pretty generic response - sort of the >> > engine's version of ¯\_(ツ)_/¯. Is the MySQL database local to the server >> > machine or on a different computer? >> I should point out that this error is thrown - I take it to mean that the >> function isn't even located. I don't think the problem is with the details >> of the database connection, I don't think it gets that far. >> To test this, I've added a call to revOpenDatabases before doing anything >> else - sure enough, this throws the same error. >> > Does this work locally before moving the >> > stack to the headless linux box? >> The whole shebang works on my Mac. I tried to see if I could run LiveCode >> headless on Mac, to minimise the differences that might be at issue, and got >> Startup error - cannot run in command line mode >> I don't know if that's a generic issue that LiveCode can't run headless on >> Mac, or if there's something else going on there. >> Ben >> On 01/02/2021 19:37, Mark Wieder via use-livecode wrote: >>> On 2/1/21 11:15 AM, Ben Rubinstein via use-livecode wrote: >>>> >>>> With thanks to friends here who helped me install and start using LC on a >>>> headless Linux box. I've now another little problem... my stack tries and >>>> fails to connect to a MySQL database. >>>> >>>> When it attempts to call revOpenDatabase, it throws error 219, "error in >>>> function handler". I take it that this means it can't find or hasn't >>>> loaded the revdb external. >>>> >>>> I've installed livecodecommunity-9.6.1.x86_64, and I launch it with >>>> ~/.runrev/components/livecodecommunity-9.6.1.x86_64/LiveCode\ >>>> Community.x86_64 -ui <mystack.livecode> >>>> >>>> I can see revdb.so and dbmysql.so are in the Externals directory. Is there >>>> something explicit I need to do to load these? >>> >>> "error in function handler" is a pretty generic response - sort of the >>> engine's version of ¯\_(ツ)_/¯. Is the MySQL database local to the server >>> machine or on a different computer? Does this work locally before moving >>> the stack to the headless linux box? >>> >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode Devin Asay Director Office of Digital Humanities Brigham Young University _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode