You did provide the right syntax. The problem is that the driver did not
convert the option to an integer before using it. Fixed in commit 163d7da
<https://github.com/weewx/weewx/commit/163d7dac6dbc44a181468a9b0f0473cd29df97b2>
.

Replace your copy of weedb/mysql.py with this copy
<https://raw.githubusercontent.com/weewx/weewx/163d7dac6dbc44a181468a9b0f0473cd29df97b2/bin/weedb/mysql.py>.
Or wait until V3.7.1.

-tk

On Tue, Mar 14, 2017 at 3:32 AM, Theophanis Kontogiannis <tko...@gmail.com>
wrote:

> Hi.
>
> Changed the config to:
>
>     [[MySQL]]
>         driver = weedb.mysql
>         # The host where the database is located
>    *     host = localhost*
> * port = 3306 *
>         # The user name for logging in to the host
>         user = weewx
>         # The password for the user name. Put in quotes to guard against
> parsing errors.
>         password = ******
>
>
>
>
> and it fails:
>
> [root@tweety ~]# systemctl status -l weewx
> ● weewx.service - SYSV: start and stop the weewx weather system
>    Loaded: loaded (/etc/rc.d/init.d/weewx; bad; vendor preset: disabled)
>    Active: active (exited) since Tue 2017-03-14 12:29:12 EET; 999ms ago
>      Docs: man:systemd-sysv-generator(8)
>   Process: 1305 ExecStop=/etc/rc.d/init.d/weewx stop (code=exited,
> status=0/SUCCESS)
>   Process: 1314 ExecStart=/etc/rc.d/init.d/weewx start (code=exited,
> status=0/SUCCESS)
>
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****    File
> "/usr/share/weewx/weedb/mysql.py", line 38, in guarded_fn
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****      return
> fn(*args, **kwargs)
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****    File
> "/usr/share/weewx/weedb/mysql.py", line 118, in __init__
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****
>  db=database_name, **kwargs)
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****    File
> "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in
> Connect
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****      return
> Connection(*args, **kwargs)
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****    File
> "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 193, in
> __init__
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****
>  super(Connection, self).__init__(*args, **kwargs2)
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****  TypeError: an
> integer is required
> Mar 14 12:29:13 tweety.example.net weewx[1320]:     ****  Exiting.
>
>
> Did I provide the correct "host/port" syntax?
>
> Thank you
>
>
>
> On Tuesday, March 14, 2017 at 3:05:32 AM UTC+2, Theophanis Kontogiannis
> wrote:
>>
>> Yeap looks correct.
>>
>> So basically in my 3.7.x case, setting "*host=127.0.0.1*" (replace
>> localhost with the IP for the localhost) did the trick to force TCP/IP
>> connection.
>>
>> Will test the localhost/port combination to check if it gives the same
>> result.
>>
>> We are in tune.
>>
>> Thank you
>> Theo
>>
>>
>> On Tuesday, March 14, 2017 at 1:05:56 AM UTC+2, Tom Keffer wrote:
>>>
>>> Here's how I understand it:
>>>
>>>    - If hostname is localhost, but no port is supplied: use sockets.
>>>    - If hostname is localhost, but a port is supplied: use TCP/IP.
>>>
>>> In version 3.6.x, you were in situation #2. With version 3.7.x, you are
>>> in #1.
>>>
>>> -tk
>>>
>>> On Mon, Mar 13, 2017 at 3:58 PM, Theophanis Kontogiannis <
>>> tko...@gmail.com> wrote:
>>>
>>>> Hi Tom,
>>>>
>>>> Thank you for the follow up.
>>>>
>>>> Actually the standard MySQL/MariaDB way is to use sockets if the
>>>> hostname is localhost.
>>>> TCP/IP will only be used if the hostname is not localhost, or if an IP
>>>> is provided.
>>>>
>>>> So basically it works now as expected (non standard dirs etc) but had
>>>> to provide the ip address for the localhost (127.0.0.1) to force TCP/IP
>>>> connection.
>>>>
>>>> Should it be documented?
>>>>
>>>> Best regards,
>>>>
>>>> Theo
>>>>
>>>>
>>>>
>>>> On Tuesday, March 14, 2017 at 12:54:35 AM UTC+2, Tom Keffer wrote:
>>>>>
>>>>> Yes, the code did change.
>>>>>
>>>>> Before, it always passed in the hostname and port, which caused MySQL
>>>>> to always use a TCP/IP connection. Now it adds the port only if the
>>>>> hostname is 'localhost' or '127.0.0.1'.
>>>>>
>>>>> I suspect that you were connecting via TCP/IP all along. The change
>>>>> just exposed the problem. But, I'm not a MySQL (let alone MariaDB) expert!
>>>>>
>>>>> Try Googling "Can't connect to local MySQL server through socket
>>>>> '/var/lib/mysql/mysql.sock' " and see what you come up with. You may have
>>>>> to configure your installation explicitly to use 
>>>>> /var/lib/mysql/mysql.sock.
>>>>>
>>>>> -tk
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Mar 13, 2017 at 3:01 PM, Theophanis Kontogiannis <
>>>>> tko...@gmail.com> wrote:
>>>>>
>>>>>> Hello All,
>>>>>>
>>>>>> I have a mariadb on CEntOS 7.3 with non-standard datadir and socket.
>>>>>>
>>>>>> The configuration is implemented via drop in files.
>>>>>>
>>>>>> [root@tweety ~]# cat /etc/my.cnf.d/tweety.cnf
>>>>>>
>>>>>>
>>>>>>
>>>>>> [mysqld]
>>>>>> datadir=/mnt/services/DBs/mysql
>>>>>> socket=/mnt/services/DBs/mysql/mysql.sock
>>>>>>
>>>>>> [client]
>>>>>>
>>>>>> socket=/mnt/services/DBs/mysql/mysql.sock
>>>>>>
>>>>>>
>>>>>> The weewx configuration is:
>>>>>>
>>>>>>    [[MySQL]]
>>>>>>         driver = weedb.mysql
>>>>>>         # The host where the database is located
>>>>>>         host = *localhost*
>>>>>>         # The user name for logging in to the host
>>>>>>         user = weewx
>>>>>>         # The password for the user name. Put in quotes to guard
>>>>>> against parsing errors.
>>>>>>         password = *****
>>>>>>
>>>>>>
>>>>>> I keep on getting an error on weewx launch:
>>>>>>
>>>>>> engine: Database OperationalError exception: (2002, "Can't connect to
>>>>>> local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
>>>>>>
>>>>>>
>>>>>>
>>>>>> Tried to 'setenforce 0' but I get the same error.
>>>>>>
>>>>>> Tried to add the non-standard socket in the /etc/my.cnf main config
>>>>>> file still no luck.
>>>>>>
>>>>>> The only way to make it work is to change the weewx.conf to force it
>>>>>> use the TCP/IP connector instead of the default socket connector.
>>>>>>
>>>>>>     [[MySQL]]
>>>>>>
>>>>>> # The host where the database is located
>>>>>>
>>>>>> host = *127.0.0.1*
>>>>>>
>>>>>>
>>>>>> Is the socket location hard coded in the weedb.mysql?
>>>>>>
>>>>>> Is there something else I am doing wrong or missed in the
>>>>>> documentation?
>>>>>>
>>>>>> Is there something that should be changed in the code or added in the
>>>>>> documentation?
>>>>>>
>>>>>> Thank you for your time.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "weewx-user" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to weewx-user+...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "weewx-user" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to weewx-user+...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "weewx-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to weewx-user+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to